Gym103687K Dynamic Reachability

发布时间 2023-07-30 15:06:01作者: _kkio

一个很奇妙的题。

回想起之前打的一场模拟赛,有一道题的部分问题是要维护动态图两两联通性的。可能不太一样,但是他有一个离线的思想,将没有修改过的边提前拎出来,把已知的联通性先求了,再用线段树分治一类的可撤销做法维护剩下边的修改。但是这样维护的复杂度跟修改次数相关非常大,如果修改次数一多起来,复杂度就会假。

但这道题给了我们一个解决方法:将操作分块。

将操作每 \(w\) 个分一块。那么涉及到的点最多 \(2w\) 个,边最多 \(w\) 条。剩下的边和点都可以缩起来。这一部分复杂度因为分了 \(\dfrac{q}{w}\) 块,复杂度是 \(\dfrac{q(n+m)}{w}\) 的,居然很对。对于 \(2w\) 个关键点,我们根据缩点后联通性建新图。每次查询时,暴力在新图中加入至多 \(k\) 条边后bfs,复杂度也是对的,非常奇妙。

块长可能因常数而异,需要自己去调,在 \(300\)\(500\) 间都是合理的。