线段树分治

Posted hs-black

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线段树分治相关的知识,希望对你有一定的参考价值。

线段树分治

离线分治来解决一类问题,如二分图

二分图显然可以用扩展域的并查集来实现,如果在线直接扫一遍的话, 发现边消失时撤销的操作并不是很好做(LCT大法吼啊),但如果撤销上一步操作就不是很难了, 只需要按秩合并,再搞一个栈来维护操作就行了

线段树分治就不知道高明到哪里去了, 在时间轴上建一颗线段树, 每个节点挂个vector, 将一条边出现的时间像区间加一样分成(log_k)个区间, 加在对应节点的vector上。

最后从线段树的根节点开始,dfs向下遍历, 每到一个节点,把它挂着的操作都用并查集做一下,到每个节点判断一下有没有奇环, 有的话就已经不用再往下走了,到叶子节点说明它是二分图,回溯时撤销上一步操作。

时间复杂度: 每个操作被分为(log_k)个操作 ,而一共有(nlog_k)个操作, 按秩合并复杂度为(log_n), 所以总复杂度为(nlog_klog_n)

以上是关于线段树分治的主要内容,如果未能解决你的问题,请参考以下文章

线段树分治

线段树分治

[HDU4867]Xor (线段树分治+类数位dp)

hdu 4366 Successor - CDQ分治 - 线段树 - 树分块

[基本操作]线段树分治和动态dp

线段树分治总结