7.9 综合训练

换 JOI 的题了,早上切了两道。

B QOJ1405 Voltage

日文 PDF 题面,坏文明。但是我甚至可以大概看懂。

题意:给你一张 \(n\) 个点 \(m\) 条边的无向图,\(n \le 10 ^ 5,m \le 2 \times 10 ^ 5\),求有多少条边,使得存在一种将所有点染成黑白两色的方案,使得该条边连接了一对同色点且剩下的所有边都连接了两个异色点。

我们转化一下题意:删去一条边后,剩下的图是二分图,且删掉的那条边连接了一对同色点。那就很好办了,二分图判定用扩展域并查集,然后线段树分治维护每一条边存在的区间。

如果你不会扩展域并查集:

这个很像 2-SAT,我们给图上每一个点在并查集上开两个点 \(u,u + n\),表示 \(u\) 是黑色与 \(u\) 是白色,连一条边的时候,我们合并 \(u,v + n\)\(v,u + n\),表示如果 \(u\) 是黑的则 \(v\) 必须是白的,反之亦然。一个集合的意义就是需要同时满足其中所有点的约束。
然后不是二分图的情况就是 \(u,v\)\(u + n,v + n\) 在同一集合内。
本质就是并查集,所以支持撤销。

如果在中间的节点就已经不是二分图了,就不用往下走了。如果下到了叶子节点,就注意判断是否满足 \(u,v + n\)\(v,u + n\) 不在同一集合内,满足才计入贡献。

D QOJ1203 Copy And Paste 2

黄题,但是被卡了 1h,我烷氮了。

正难则反,我们考虑倒着处理操作,我们可以直接求最后的串的第 \(i\) 个位置对应前面的哪个位置,然后分类讨论。

\(len = b _ p - a _ p\)

  • \(i \le c _ p\):这个操作没有影响到,不变。
  • \(i \in [c _ p + 1,c _ p + len]\):是复制的区间,转到原区间,\(i \gets i - c _ p + a _ p\)
  • \(i \gt c _ p + len\):是后面的区间,直接减去区间长度,\(i \gets i - len\)

我们枚举前 \(k\) 个位置,像上面一样做就行。

posted @ 2025-07-12 11:06  xguagua_233  阅读(5)  评论(0)    收藏  举报