摘要:
这两天终于基本理解了Link-Cut Tree这种神一般的东西。然后就来做这道题了。原题是CodeChef上的。CodeChef上没有强制在线,且时限更宽松,所以似乎用莫队一样的算法把询问分组就能水过。但是BZOJ上这道有部分数据强制在线,而且实现紧得多。于是只能用动态树了。简单来说,就是用动态树维护\([1, i]\)中的边的最大生成树。也就是说往图中加入不再这个生成树上且标号小于i的边时不会改变连通块的个数。这应该是很显然的。假如前面某条边会改变连通块的个数,它就应该保留在树中。然后我们用线段树维护连续编号的边中有哪些在当前的最大生成树中。假如允许离线,我们只需要将询问按右端点排序从左往右 阅读全文