做题记录 25.8.17

\(\textcolor{purple}\odot\) P11360 [CEOI 2015] 管道

用并查集判断是否为树边,若为树边则合并并查集的两个联通块,否则生成一个随机值 \(x\),令 \(c_u\)\(c_v\) 都异或上 \(x\),最后对于每个连通块令 \(f\)\(c\) 的子树和,则对于所有 \(f_u=0\) 的点,若 \(u\) 不是搜索树的根,则 \((u,fa_u)\) 为割边

时间复杂度 \(O(m\alpha(n)+n)\),空间复杂度 \(O(n)\)

代码

\(\textcolor{purple}\odot\) CF1574E Coloring

考虑 \(a_{i-1,j},a_{i-1,j-1},a_{i,j-1},a_{i,j}\),共有六种合法情况,且都满足 \(\forall i,\forall j,a_{i,j}\ne a_{i-1,j}\)\(\forall i,\forall j,a_{i,j}\ne a_{i,j-1}\)

两部分的交为 \(\forall i,\forall j,a_{i,j}\ne a_{i,j-1},a_{i,j}\ne a_{i-1,j}\),即任意相邻的位置值不同(类似国际象棋棋盘),一共两种可能,记录一下已经给定的位置是否分别满足条件即可

因此可以分别考虑两部分,显然两部分处理是类似的

考虑如何处理 \(a_{i,j}\ne a_{i,j-1}\) 的情况,发现整个 \(a\) 可以记录为 \(c_{1\sim n}\),其中 \(a_{i,j}=c_i\oplus (j\bmod 2)\),因此每个给定的 \(a_{i,j}\) 相当于限制 \(c_i=o\;(o\in\{0,1\})\),维护一下是否有矛盾的 \(c\),以及无限制的 \(c\) 的数量,容易得到 \(a\) 的数量

时间复杂度 \(O(n+m+k)\)

代码

参考

\(\textcolor{purple}\odot\) CF1572D Bridge Club

对于一组匹配 \((u,v)\)\(u\) 除了 \((u,v)\) 外还有 \(n-1\) 条出边,\(v\) 那侧也有 \(n-1\) 条,加上 \((u,v)\) 本身,一共 \(2n-1\) 条边

显然任选 \(k(2n-1)\) 条边,其中必然能选出 \(k\) 组匹配

令匹配边的权值为两个端点的权值之和

若最终答案选择的一条匹配边边权不是前 \(k(2n-1)\) 大,则一定可以调整为前 \(k(2n-1)\)

这样边数和点数都是 \(O(nk)\)

使用基数排序容易 \(O(V+n2^n)\) 选出这些边

匹配部分用最大费用最大流实现,最大流为 \(k\),因此某一时刻残量网络上负权边数量不超过 \(k\) 条,即最短路为 \(O(k)\) 的,每一轮 \(\text{spfa}\)\(O(nk\times k)=O(nk^2)\),总计 \(O(k)\) 轮,时间复杂度 \(O(nk^3)\)

总时间复杂度 \(O(V+n2^n+nk^3)\)

代码

参考

\(\textcolor{purple}\odot\) CF1572C Paint

区间 \([l,r]\) 一定存在一种最优解使得最终都变为 \(a_r\),令 \(f_{l,r}\) 表示 \([l,r]\) 都变为 \(a_r\) 的最小操作次数

显然 \(f_{l,l}=0\),转移为

\[f_{l,r}\gets \min\left(f_{l,r-1}+1,\min_{l\le k<r} (f_{l,k}+f_{k+1,r}+[a_k\ne a_r])\right) \]

\(a_k\ne a_r\) 时,需要额外操作使两侧颜色相同,不优于 \(a_k=a_r\) 的情况

因此单次转移 \(O(p)\),其中 \(p\) 为出现次数的最大值

时间复杂度 \(O(n^2p)\)

代码

参考

posted @ 2025-08-20 07:51  Hstry  阅读(4)  评论(0)    收藏  举报