提高组刷题营 DAY 2】的更多相关文章

1.滞空(jump/1s/64M) #include<bits/stdc++.h> using namespace std; typedef long long LL; ; inline void rd(LL &x) { x=;;char ch=getchar(); ;ch=getchar();} +ch-';ch=getchar();} } LL n,m,x[],y[],g,ans; LL qpow(LL a) { LL res=,k=mod-; while(k) { )res=re…
DFS 深度优先搜索 通过搜索得到一棵树形图 策略:只要能发现没走过的点,就走到它.有多个点可走就随便挑一个,如果无路可走就回退,再看有没有没走过的点可走. 在图上寻找路径[少数可用最短路解决]:最短路不能解决路径有顺序的,也就是如果路径的边权与之前经过的点火这路有关,那就只能深搜 解决递归形式的问题 有后效性的选择问题 组合问题 状态可能很多,因此数据范围一般较小 1.状态表示 2.剪枝 剪枝的方法: 最优答案剪枝 记忆化剪枝 可行性剪枝 …… 1.洪水[ 1s 32M ] 题解 数据范围小,…
低仿机器人(robo,1s,64M) 题解 大模拟 代码 #include <cstdio> #include <cstring> #include <iostream> using namespace std; ]={-,,,}; ]={,-,,}; ][][]; ],bigBullet,smallBullet,k,endIf,totTarget; void IN_Map_Robot(); void OutPut(int); int Para(char str[]);…
牛客CSP-S提高组赛前集训营1 比赛链接 官方题解 before:T1观察+结论题,T2树形Dp,可以换根或up&down,T3正解妙,转化为图上问题.题目质量不错,但数据太水了~. A-仓鼠的石子游戏 题目描述 一共n个石子堆,每个石子堆有ai个石子,两人轮流对石子涂色(先手涂红,后手涂蓝),且需要保证当前回合涂的石子颜色不能和它相邻的两个同色,谁涂不下去谁输.一共T个询问,对于每个询问输出先手必胜还是后手必胜. \(1<=n<=10^3,1<=ai<=10^9,1&l…
牛客网CSP-S提高组赛前集训营 标签(空格分隔): 题解 算法 模拟赛 题目 描述 做法 \(BSOJ6377\) 求由\(n\)长度的数组复制\(k\)次的数组里每个连续子序列出现数字种类的和 对每一种颜色计算贡献区间 \(BSOJ6378\) 求树上两条长度分别为\(p\),\(q\)不相交路径对数 换根背包\(dp~or~\)\(LCA\)+差分 \(BSOJ6379\) \(T1\) 有一个长为\(n×k\)的数组,它是由长为\(n\)的数组\(A_1\),\(A_2\),...,\(…
目录 \(NOIP2010\)提高组真题部分整理 \(T1\)机器翻译: 题目背景: 题目描述: 输入输出格式: 输入输出样例: 说明: 题解: 代码: \(T2\)乌龟棋 题目背景: 题目描述: 输入输出格式: 输入输出样例: 说明: 题解: \(T4\)引水入城: 题目描述: 输入输出格式: 输入输出样例: 说明: 题解: 代码: \(NOIP2010\)提高组真题部分整理 \(T1\)机器翻译: 洛谷\(P1540\) 题目背景: ​ 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来…
还是先看题吧: 试题描述  无向连通图 G 有 n 个点,n-1 条边.点从 1 到 n 依次编号,编号为 i 的点的权值为 Wi ,每条边的长度均为 1.图上两点(u, v)的距离定义为 u 点到 v 点的最短距离.对于图 G 上的点对(u, v),若它们的距离为 2,则它们之间会产生Wu * Wv 的联合权值.请问图 G 上所有可产生联合权值的有序点对中,联合权值最大的是多少?所有联合权值之和是多少? 输入 第一行包含 1 个整数 n.接下来 n-1 行,每行包含 2 个用空格隔开的正整数 …
A 货物收集 显然是一个二分答案的题. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #define dbg(x) cerr << #x << " = " << x <<endl #define dbg2…
题目链接: https://vijos.org/p/1496 题目大意: 给你n(n<24)根火柴棍,你可以拼出多少个形如“A+B=C”的等式?("+"和"="各自需要两根火柴棍) 如果A≠B,则A+B=C与B+A=C视为不同的等式(A.B.C>=0) n根火柴棍必须全部用上 题目思路: [枚举] 其实这题很水,n最大才24,扣掉+和=就只有20,直接枚举就行. 稍微算一下就知道每个数最大不会超过1111 两层for枚举每个数,判断是否用尽火柴即可. /…
书信(letter) Description 有 n 个小朋友, 编号为 1 到 n, 他们每人写了一封信, 放到了一个信箱里, 接下来每个人从中抽取一封书信. 显然, 这样一共有 n!种拿到书信的情况. 现在亮亮规定, 对任意的 1<=x,y<=n, 如果 x 号小朋友拿到 u 号小朋友写的 书信, y 号小朋友拿到 v 号小朋友写的书信, 那么(x+y)号小朋友必须拿到(u+v) 号小朋友写的书信(这里的加法若和超过了 n, 那么就减去 n) . 小林想知道, 总共有多少种拿到书信的情况呢…
能量(energy) Description ​ 有一块能量田,它的形状是 n*m的矩形,每一个格子上都有一个能量值 a[x][y] (可正可负).一块矩形田的能量定义为它的每个格子的能量值之和. ​ 现在,亮亮需要选择一块正方形的能量田,用它的能量来为自己的魔法棒充 值.他当然希望所选择的能量田所含的能量最大,请你帮助他求出这个最大值. ​ 数据保证能量田中至少有一个格子的能量值非负. Input 一行两个整数 n 和 m. 接下来 n 行,每行 m 个整数. Output 输出只有一个整数,…
购物(shop) Description 小林来到商店中进行购物.商店里一共有 n 件物品,第 i 件物品的价格为 a[i] 元.小林总共需要购买 m 件物品,他希望他所花费的钱最少,请你计算出最小 花费. 由于输入的数据数量过大,我们采用一种加密的方式进行输入.给出两个密 钥 x 和 y.则 a[1] = x, a[i] = (y*a[i-1] + x) % 10^9. Input 一行两个整数 n 和 m. 第二行共两个整数 x 和 y,表示密钥. Output 输出只有一个整数,表示最小花…
字符串(string) Description 小林与亮亮正在做一个游戏.小林随意地写出一个字符串,字符串只由大写 字母组成,然后指定一个非负整数 m,亮亮可以进行至多 m 次操作,每次操作 为交换相邻两个字符.亮亮的目标是使得操作后的字符串出现最长相同的字符的 长度最大.你能帮亮亮计算一下这个最大长度是多少吗? Input 第一行一个字符串 S. 第二行一个整数 m. Output 只有一个整数,表示所求的最大长度. 表示刚开始想了一个小时的\(DP\) 然后还出样例了, 要不是手出了一组样例…
大水题 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到自己来到了魔法城堡,但一扇巨大的石门阻拦了他通向城堡内的路.正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条. 亮亮拿起纸条的一端,只见上面写着打开机关的方法:"打开机关需要念动符咒,咒语是一串长为 L 的由 0 和 1 组成的字符串.在这张长纸条上列了 n 个长为 L 的字符串,正确的咒语即是在纷繁的 2^L 种字符串中,与这些纸条上的字符串相异度之和最小,并且在满足这一条件下, 0 的个数最多的字符串.…
咒语(curse) Description 亮亮梦到自己来到了魔法城堡,但一扇巨大的石门阻拦了他通向城堡内的路. 正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条. 亮亮拿起纸条的一端,只见上面写着打开机关的方法:"打开机关需要念动 符咒,咒语是一串长为 L 的由 0 和 1 组成的字符串.在这张长纸条上列了 n 个 长为 L 的字符串,正确的咒语即是在纷繁的 2^L 种字符串中,与这些纸条上的 字符串相异度之和最小,并且在满足这一条件下,0 的个数最多的字符串.两个 字符串的相异…
1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到自己来到了魔法城堡,但一扇巨大的石门阻拦了他通向城堡内的路.正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条.亮亮拿起纸条的一端,只见上面写着打开机关的方法:“打开机关需要念动符咒,咒语是一串长为 L 的由 0 和 1 组成的字符串.在这张长纸条上列了 n 个长为 L 的字符串,正确的咒语即是在纷繁的 2^L 种字符串中,与这些纸条上的字符串相异度之和最小,并且在满足这一条件下, 0 的个数最多的字符串.两个字符串…
原题链接 算法不难,比赛的时候就和cyc大佬一起yy了正解,不过因为交的时候比较急(要回寝室惹),我有两数组开错大小直接爆到50,cyc大佬则只把文件输入关了一半,直接爆零(╯ ̄Д ̄)╯┻━┻ 要尽量使\(k\)次删边都能有贡献,那么很容易就想到割边. 所以我们先用\(\mathtt{tarjan}\)跑出所有割边,而每一条割边都能产生\(1\)的贡献,因此有\(sum_{bridge}\)条割边,就能增加\(sum_{bridge}\)个连通块. 若\(k \leqslant sum_{bri…
对了我在这里必须讲一个非常重要的事情,就是前天也就是$2019.8.21$的傍晚,我决定重新做人了$!!$ 其实之前没怎么做$Noip$题,那就从现在开始叭…
货物收集 二分答案.复杂度\(O(n\log n)\). 货物分组 用费用提前计算的思想,考虑用一个新的箱子来装货物会发生什么. 显然费用会加上后面的所有货物的总重. \(60\)分的\(O(n^2)\)DP代码: #include<bits/stdc++.h> #define LL long long const int SIZE=100005,INF=0x3F3F3F3F; int n; LL W,A[SIZE],sum[SIZE]; LL DP[SIZE]; using std::max…
A.无形的博弈 心理题. 答案为\(2^n\),可感性理解结论的正确性. #include<bits/stdc++.h> #define LL long long const LL Mod=998244353; int n; int main() { scanf("%d",&n); LL Ans=1; for(int i=1;i<=n;i++) Ans=(Ans<<1)%Mod; printf("%lld",Ans); retu…
本题地址http://www.luogu.org/problem/show?pid=1525 关押罪犯 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多.如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件. 每年年末,警察局会将本年内监狱中…
[A003]均分纸牌[难度A]———————————————————————————————————————————————————— [题目要求] 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若干张纸牌,然后移动.移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上:在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上:其他堆上取的纸牌,可以移到相邻左边或右边的堆上.现在要求找出一种移动方法,用最少的移动次数使…
题目链接: https://vijos.org/p/1313 题目大意: m(m<=32000)金钱,n(n<=60)个物品,花费vi,价值vi*ci,每个物品可能有不超过2个附件,附件没有附件. 题目思路: [动态规划] 01背包.因为至多2个附件,且附件没有附件,所以可以直接枚举4种情况. // //by coolxxx ////<bits/stdc++.h> #include<iostream> #include<algorithm> #include…
http://www.hzxjhs.com:83/contest/493/problem/3 [题目大意] 给定一个有n(n<=500000)个点,m(1<=500000)条边的无向图.给Q(1<=500000)个询问ui和vi,问ui和vi之间是否存在一条不经过重复点的路径,使得经过的点数为偶数. [题目解析] #include<cstdio> #include<algorithm> #include<cstring> #include<cct…
描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案. 输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100.输出共两行,第一行是一个字符串,假设输入的的单词是Luc…
比赛链接 期望得分:100+20+20 实际得分:40+20+30 awa  cccc T1 :基于贪心的思路,然后开始爆搜(雾 那必然是会死的,好吧他就是死了 #include<iostream> #include<cstdio> #include<algorithm> #define int long long using namespace std; int n,q,m; ; ]; int x,y; inline int read(); int cha() { ;…
期望得分:100+0+10 实际得分:40+0+0 考炸了... T1:题目链接 究竟为什么会这样,,, 仔细研读我的丑代码 发现... 枯辽.... #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> using namespace std; int T,n; ]; int flag; inline void out1() { cout<<"…
前一个小时看这几道题感觉要爆零 A. 仓鼠的石子游戏 分析一下发现a[i]>1a[i]>1a[i]>1时后先手必输,a[i]=1a[i]=1a[i]=1时先手必赢 然后直接看1的个数奇偶性就行了 CODE #include <bits/stdc++.h> using namespace std; int main () { int T, n, a; scanf("%d", &T); while(T--) { scanf("%d"…
复读数组 分成 3 种区间算答案: 一个块内的区间 两个块交界处,长度小于块长的区间 长度不小于块长的区间 对于第三种区间,容易发现每个区间的权值一样,只需要算出个数即可. 对于前两种空间,我的思路是:对于一个重复出现的元素,记第一次出现的这个元素贡献权值,然后讨论每一个数会给哪些区间贡献权值即可. 3年OI一场空 不开long long见祖宗 代码: #include<bits/stdc++.h> #define LL long long #define int long long cons…
比赛链接 A.服务器需求 维护每天需要的服务器数量的全局最大值(记为\(Max\))和总和(记为\(sum\)),那么答案为: \[max(Max,\lceil\dfrac{sum}{m}\rceil)\] 证明略. 由于只有单点修改,可用一个 multiset 维护全局最大值和总和,当然,线段树也是可以的. 不过有一个易错点,在使用 multiset 的\(\text{.erase()}\)函数时, 如果写\(\text{s.erase(5)}\),传入一个值,会删除所有的 5 . 如果写\(…