CF911G 题解
考虑分块。
如果你做过未来日记就会知道一个很明显的做法——值域并查集。
先考虑整块:
-
块内没有 \(x\) 则跳过本次操作。
-
块内有 \(x\) 没有 \(y\) 则令 \(fa[x] = y\)
-
块内存在 \(x\) 也存在 \(y\) 则暴力修改,注意到每次这种修改都会让块内元素种类减少 \(1\) ,而块内颜色种类始终不增,又因为一共只有 \(100\) 种颜色,所以均摊操作一次下来是 \(O(\frac{100 \times \sqrt n}{n})\) 的。
对于散块暴力 \(O(\sqrt n)\) 重构即可。