【题解】 Call Me Call Me CCPC Mianyang 2022

发布时间 2023-08-14 14:09:41作者: Imakf

https://codeforces.com/gym/104065/

原题做法是类似猫树转成前缀后缀,写起来太麻烦,不如如下做法:

如果每个区间所需满足的点不超过 \(\sqrt{n}\) 个,即可以如下暴力:

把每个区间拍到线段树上,每次更新一个点,则在线段树上把所有包含他的区间全部 \(-1\) 看看是否减到了 \(0\),拿个队列一直更新下去即可。

考虑神秘的操作分块:我们只关心 \(k < \sqrt{n}\) 的区间,然后每进行 \(sqrt{n}\) 次修改就暴力重构求出所有区间的 \(k\) 并更新线段树。

注意每个区间只会加入线段树 \(1\) 次,会被改动 \(O(\sqrt{n})\) 次但是每次复杂度是 \(O(1)\),故复杂度就是 \(O(m \sqrt{n})\)