随笔分类 - Codeforces
摘要:Too Much Money 最关键的一点就是这个贪心可以在sqrt(n)级别算出答案。 因为最多有sqrt(n)个不同的数值加入。 我们可以发现最优肯定加入一个。 然后维护一个当前可以取的最大值, 枚举加入的数来贪心。
阅读全文
摘要:Bear and Bowling 4 这也能斜率优化。。。 max[ i ] = a[ i ] - a[ j ] - j * (sum[ i ] - sum[ j ])然后就能斜率优化啦, 我咋没想到, 我好菜啊。 斜率优化最重要的是转换成前缀形式, 我TM又忘了。
阅读全文
摘要:Parking Lot 线段树区间合并一下, 求当前要占的位置, 不包括两端点的写起来方便一点。
阅读全文
摘要:Trucks and Cities 一个很显然的做法就是二分然后对于每个车贪心取check, 这肯定会TLE, 感觉会给人一种贪心去写的误导。。。 感觉有这个误导之后很难往dp那个方向靠。。 dp[ k ][ i ][ j ]表示把 i, j 这个区间分成 k 段, 所有段的最大值的最小值为多少。
阅读全文
摘要:Turtles 利用LGV转换成求行列式值。
阅读全文
摘要:vp的时候没码出来。。 我们用set去维护, 每一块区域, 每块区域内的元素与下一个元素的差值刚好为ki,每次加值的时候我们暴力合并, 可以发现我们最多合并O(n)次。 然后写个线段树就没了。
阅读全文
摘要:感觉这个题挺有意思的, 我们可以将 L = lcm(1, 2, 3, ... , 8) 看作一组。 然后用dp[ i ][ j ]表示到第 i 种物品当前的值为 j 能用L的最大数量。
阅读全文
摘要:转换成前缀和, 预处理一下然后莫队。
阅读全文
摘要:我还以为是什么板子题呢。。。 我们把儿子当做点, 公主当做边, 然后就是求边权值最大基环树森林。
阅读全文
摘要:这题一看就筛质数就好啦, 可是这怎么筛啊, 一看题解, 怎么会有这么骚的操作。
阅读全文
摘要:一直在考虑, 每一段的贡献, 没想到这个东西能直接dp。。因为所有的h都是一样的。
阅读全文
摘要:Tree Destruction 先把直径扣出来, 然后每个点都和直径的其中一端组合, 这样可以保证是最优的。
阅读全文
摘要:Bacterial Melee 我们发现所有合法串都是原序列的某个子序列(这个子序列相邻元素相等) 的扩展, 比如子序列为abc, 那么aabbbc, abbbcc 等都是合法串。 所以我们只需要dp出原串有多少相邻元素不同的子序列就好啦。
阅读全文
摘要:Yet Another Minimization Problem dp方程我们很容易能得出, f[ i ] = min(g[ j ] + w( j + 1, i ))。 然后感觉就根本不能优化。 然后就滚去学决策单调啦。 然后就是个裸题, 分治一下就好啦, 注意用分治找决策点需要的条件是我们找出被决
阅读全文
摘要:Fafa and Ancient Mathematics 转换成树上问题dp一下。
阅读全文
摘要:REQ 把询问离线, 我们从n 到 1遍历过去的时候, 把(1 - 1 / p)乘在最靠近当前位置的地方, 然后区间求乘积就好啦。
阅读全文
摘要:George and Cards 我们找到每个要被删的数字左边和右边第一个比它小的没被删的数字的位置。然后从小到大枚举要被删的数, 求答案。
阅读全文
摘要:Fools and Foolproof Roads 并查集瞎搞搞就行, 有点小坑点。
阅读全文
摘要:Short Code 我的想法是建出字典树, 然后让后面节点最多的点优先向上移到不能移为止, 然后gg。 正确做法是对于当前的节点如果没有被占, 那么从它的子树中选出一个深度最大的点换到当前位置。 用set启发式合并维护一下。
阅读全文
摘要:Bear and Contribution 对于对于5余数为, 0, 1, 2, 3, 4的分别处理一次, 用优先队列贪心。
阅读全文