上一页 1 ··· 33 34 35 36 37 38 39 40 41 ··· 86 下一页
摘要: 分析:模拟题,关键就是要理解题目意思.m≥3的轮换可以拆成m=2的小轮换,小轮换的话只需要交换一下就可以了. 阅读全文
posted @ 2017-11-02 21:49 zbtrs 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 分析:打个表,会发现a1,a2中较小的一个数会出现很多次,把这些数删掉,就会形成若干个等差数列,每个等差数列中新出现的数的个数是a1a2较大者除以较小者.之后取个余,继续做重复的操作就行了. 阅读全文
posted @ 2017-11-02 20:52 zbtrs 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 分析:比较难想的一道dp题.要想补兵的数量最多,最后每个小兵的血量肯定是呈一个阶梯状的:i,i+1,i+2......i+k.那么记录一下每个血量i离它最近的小兵的血量是多少,记作cur[i].那么把这个小兵砍成i就需要砍cur[i] - i次,显然一轮是不可能有这么多次的,只有前面的血量不去砍,留 阅读全文
posted @ 2017-11-02 14:33 zbtrs 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 分析:因为每一组编号都是连续的嘛,所以能分成一组的尽量分,每次加边后dfs判断一下1和n是否连通.有向图的判连通没有什么很快的方法,特别注意,并查集是错的!这个算法可以得到60分. 事实上每一次都不需要从点1开始dfs,因为之前很多点都遍历到了,再从1开始会重复.如果新加的一条边的起点没有被访问过, 阅读全文
posted @ 2017-11-02 14:14 zbtrs 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 分析:感觉像是贪心,再看数据范围这么大,肯定是贪心没错.但是要怎么贪呢?主要的思想是让每次往上加的数尽量多,肯定要先把0分裂,如果能正好一起跳到最终状态就好.举个例子:5,3,2,1,最大值比次大值大2,所以肯定有一个0先跳两下,另外一个0分裂,等到第一个0跳了两下后再接着跳,这样手推感觉有点复杂, 阅读全文
posted @ 2017-11-02 13:54 zbtrs 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 分析:一个贪心的想法是每次找到根的点权和最大的点进行操作,关键是怎么维护.每次找最大值,修改后会对这条链上每个点的子树上的点造成影响,可以用线段树来维护.找最大值就是区间求最大值嘛,对子树进行操作利用dfs序维护一下就好了.记录一下最大值的位置,每次从这个位置向上跳并对它的子树进行修改直到当前点的点 阅读全文
posted @ 2017-11-01 18:31 zbtrs 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 分析:举个例子就能发现:偶数位上的数都必须是0,奇数位上的数可以取0~k-1,这就是一个标准的数位dp了. 这编译器......数组越界了竟然不报错. 阅读全文
posted @ 2017-11-01 16:37 zbtrs 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 分析:每个连通块都是独立的,对一个连通块进行分析.如果边数>点数,显然是不可能的,因为每条边要分配给一个点,至少有一个点分配了两次以上.如果边数=点数,就形成了环,有两种方案,顺时针一个环,逆时针一个环.如果边数=点数-1,形成了链,将n个点分配n-1条边,答案为C(n,n-1),也就是n,统计一下 阅读全文
posted @ 2017-11-01 15:02 zbtrs 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 分析:这道题和以前做过的模拟赛题很像:传送门. 对于前30%的数据可以直接暴力求,k=1的数据利用线段树求区间最大值,没有修改操作可以用主席树.100%的数据主席树是肯定用不了的,观察到K非常小,可以用线段树来暴力维护. 线段树记录每个区间内的第k小值(1≤k≤10),其它的操作没啥变化,就是pus 阅读全文
posted @ 2017-11-01 13:19 zbtrs 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 分析:博弈论. 单个博弈通用的解法是dp,设f[i][j][0]为如果在(i,j)Yuri先走能否获胜,f[i][j][1]为Chito能否获胜,对应的就是必胜态和必败态的转移.如果f[i-1][j][1],f[i-1][j-1][1],f[i][j-1][1]都为1,那么f[i][j][0]为0, 阅读全文
posted @ 2017-11-01 11:03 zbtrs 阅读(199) 评论(0) 推荐(0) 编辑
上一页 1 ··· 33 34 35 36 37 38 39 40 41 ··· 86 下一页