CF 做题记录

CF 做题记录

CF896E:第二分块。离线后每块分别处理。然后直接值域平移合并,通过操作分类后均摊分析保证复杂度。

CF1039D:若已知 \(k\) 存在一个 \(O(N)\) 的贪心,从叶往上开始选。然后根号分治,对于 \(k\le \sqrt N\) 直接贪心,注意到答案有单调性,所以对 \(k>\sqrt N\) 二分答案变化的分界线。

CF850F:考虑枚举最终的颜色,这样我们只需关注颜色 \(c\) 的球数的变化情况。后面推推式子就出来了。

CF360E:诡异图论贪心题。我们有如下观察:对于 \(S_1\) 倾向于走而 \(S_2\) 不倾向于走的点,其出边一定取 \(l\),否则取 \(r\)。换句话说,考虑一条边 \((u,v,l,r)\)。如果 \(dis(S_1,u)<dis(S_2,u)\),那么 \(w\) 一定取 \(l\);如果 \(dis(S_1,u)>dis(S_2,u)\),那么 \(w\) 一定取 \(r\)。如果 \(dis(S_1,u)=dis(S_2,u)\) 怎么办?因为一旦 \(S_1\)\(S_2\) 走到 \(u\) 上就不再分离,所以取 \(l\) 可以促进两点走到 \(u\) 上而达成 DRAW;否之则有可能争取到 WIN 的情况(也可能反而达成了 LOSE,所以先看一下能否取 WIN,再看一下能否取 DRAW)。

CF555E:神秘结论:边双一定可以重定向为 SCC。证明考虑数学归纳。后面就是简单的树上操作了。

CF19D:线段树套 set。按期重构 KDT 能不能过呢

CF1746F:神秘随机化。注意到如果每个出现过的正整数的出现次数都是 \(k\) 的倍数,那么总和一定是 \(k\) 的倍数。给每个权值随机赋个值就可以了。

CF757F:支配树板子。核心思想:支配关系构成树形关系,每个点的支配点为其支配树上的祖先。

CF79D:考虑差分,就是一次翻转两个点。如何翻转任意的两个点?其实就是一个最短路。

CF830D:如果只设 \(f[n]\) 表示深度为 \(n\) 时的答案,你会发现很难维护,因为一条路径可以在上面做一个中转点然后又回到原来下面的子树内。注意到这样实际上在这个子树内形成多条路径;所以设 \(f[n,k]\) 表示深度为 \(n\) 且子树内有 \(k\) 条路径就能转移了。

CF1404E:考虑如何把格子划分为两个集合——被横砖覆盖和被纵砖覆盖。求最大的 连接两个纵砖格的横边数+连接两个横砖格的纵边数。发现贡献在边上很难搞,考虑边点互换,点表示这条边能否贡献,边表示两个命题是否矛盾,答案就是最大独立集,注意到因为可以黑白染色所以是二分图。

CF1592F2:一个简单的观察就是翻转右上角和左下角的操作没有用。一次翻转一个矩阵很棘手,考虑对原矩阵做差分 \(d_{i,j}=a_{i,j}\oplus a_{i,j+1}\oplus a_{i+1,j}\oplus a_{i+1,j+1}\),那么最终矩阵变为 0 当且仅当差分矩阵变为 0。那么左上角操作 \((x,y)\) 只会翻转 \((x,y)\);对于右下角操作 \((x,y)\),会翻转 \((n,n),(n,y-1),(x-1,n),(x-1,y-1)\) 这四个点。注意到这样我们一定不会对于同一行或同一列的两个点使用右下角操作,因为这样劣于 3 次左上角操作,于是构成了行与列的一个匹配。

posted @ 2025-04-14 22:06  justalearner  阅读(6)  评论(0)    收藏  举报