随笔分类 - Codeforces
摘要:Place Your Ad Here 把没用的第一类区间去掉之后, 排序, 然后枚举第二类区间, 在上面死命二分就好了。
阅读全文
摘要:Frogs and mosquitoes 用线段树维护每个点覆盖的最小id, 用multiset维护没有吃的蚊子。
阅读全文
摘要:The Chocolate Spree 对拍拍了半天才知道哪里写错了。。 dp[ i ][ j ][ k ]表示在 i 这棵子树中有 j 条链, 是否有链延伸上来。
阅读全文
摘要:Souvenirs 我们将询问离线, 我们从左往右加元素, 如果当前的位置为 i ,用一棵线段树保存区间[x, i]的答案, 每次更新完, 遍历R位于 i 的询问更新答案。 我们先考虑最暴力的做法, 我们先找到位于 i 前面第一个 j, a[ j ] > a[ i ], 那么x 属于 [ 1, j
阅读全文
摘要:Two Merged Sequences 感觉是个垃圾题啊, 为什么过的人这么少。。 dp[ i ][ 0 ]表示处理完前 i 个, 第 i 个是递增序列序列里的元素,递减序列的最大值。 dp[ i ][ 1 ]表示处理完前 i 个, 第 i 个是递减序列序列里的元素,递增序列的最小值。 然后随便转
阅读全文
摘要:Perun, Ult! 恶心题, 好多细节。。。 啊, 好恶心啊。
阅读全文
摘要:Music in Car 用两个Set维护一下尺取的过程。
阅读全文
摘要:Geometrical Progression n == 1的时候答案为区间长度, n == 2的时候每两个数字都可能成为答案, 我们只需要考虑 n == 3的情况, 我们可以枚举公差, 其分子分母都在sqrt(1e7)以内, 然后暴力枚举就好啦。
阅读全文
摘要:Interval Cubing 这种数学题谁顶得住啊。 因为 (3 ^ 48) % (mod - 1)为 1 , 所以48个一个循环节, 用线段树直接维护。
阅读全文
摘要:我们可以把每段连续可以选的字符看成一个游戏, 那么sg[ i ]表示连续 i 个字符可选的sg值。 然后找找第一个就好啦。
阅读全文
摘要:Dish Shopping 将每个物品拆成p 和 s 再加上人排序。 然后问题就变成了, 对于一个线段(L - R), 问有多少个(li, ri)满足 L >= li && R >= ri, 这个东西可以直接树状数组套平衡树维护。 但是这个题目有个特殊性,因为排好序之后不会存在 li > L &&
阅读全文
摘要:刚开始, 我以为两个点肯定是通过树上最短路径过去的, 无非是在两棵树之间来回切换, 这个可以用倍增 + dp 去维护它。 但是后来又发现, 它可以不通过树上最短路径过去, 我们考虑这样一种情况, 起点在奇树里面, 终点在偶树里面, 然后这两个点最短路径里面点到对应点的距离都很大, 这种情况下我们就需
阅读全文
摘要:Extending Set of Points 我们能发现, 如果把x轴y轴看成点, 那么答案就是在各个连通块里面的x轴的个数乘以y轴的个数之和。 然后就变成了一个并查集的问题, 但是这个题目里面有撤销的操作, 所以我们要把加入和撤销操作变成 这个点影响(L , R)之间的询问, 然后把它丢到线段树
阅读全文
摘要:Adam and Tree 感觉非常巧妙的一题。。 如果对于一个已经建立完成的树, 那么我们可以用dp[ i ]表示染完 i 这棵子树, 并给从fa[ i ] -> i的条边也染色的最少颜色数。 mnson[ i ][ 0 ] 和 mnson[ i ][ 1 ]分别表示 i 的儿子的dp值的最大和第
阅读全文
摘要:第一次看到这种骚东西, 期望还能二分的啊??? 因为存在重置的操作, 所以我们再dp的过程中有环存在。 为了消除环的影响, 我们二分dp[ 0 ][ 0 ]的值, 与通过dp得出的dp[ 0 ][ 0 ]的值进行比较。 这样看着好像很不合理, 但实际上比较这两个值, 你能推倒出当前二分的值合不合法。
阅读全文
摘要:Cooperative Game 智商题, 感觉不太能推出来, 虽然看看证明过程是对的。
阅读全文
摘要:Maximize Mex 离线之后把删数变成加数, 然后一边跑匈牙利一遍算答案。
阅读全文
摘要:Steps to One 啊, 我要死了, 这种垃圾题居然没写出来, 最后十分钟才发现错在哪。 不知道为什么我以为 对于一个数x , 除了它的因子和它的倍数都是和它互质的, 我脑子是抽了吗? 随便瞎dpdp的题。。 还熬夜打cf好暴躁啊啊啊。 我求我自己以后打比赛多动动脑子。
阅读全文
摘要:第一次知道这种背包还能退的。。。。 我们用dp[ i ]表示选取若干个物品重量到达 i 的方案数。 如果我们g[ i ]表示不用第 x 个物品的, 然后选若干其他的物品到达 i 的方案数。 if(i < cnt[ x ]) g[ i ] = dp[ i ] else g[ i ] = dp[ i ]
阅读全文
摘要:Coprime Arrays 啊,我感觉我更本不会莫比乌斯啊啊啊, 感觉每次都学不会, 我好菜啊。
阅读全文