线段树分治

Posted knife-rose

tags:

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

原理

改修放区间,答案放叶子的一种分治方法

应用

二分图

考虑一个图是二分图当且仅当没有奇环,用扩展域并查集维护

类似线段树的方法,遍历到一个区间就下放完全包含这个区间的边,然后判断是不是二分图

回溯的时候删去影响,所以需要资瓷删除的并查集

CF918E

(bitset)维护每个位置的答案,最后合并到一起

[CTSC2016]时空旅行

过于毒瘤

考虑把每个点影响子树化为(dfs)序列上问题,然后线段树分治

对于题目,我们要求(min{(X-x_i)^2+c_i}),(X)每次给定

拆开(=X^2-2Xx_i+x_i^2+c_i=k)

变形一下(2Xx_i+k=X^2+x_i^2+c_i)

我们希望(k)最小,发现这是一个线性规划问题,对于每个决策点形如((x_i,X^2+x_i^2+c_i))

但是对于每个(X)来说(X^2)固定不用加入决策,所以决策点变为((x_i,x_i^2+c_i))

对于线段树的每个端点维护一个下凸包

如果我们大力平衡树维护复杂度(O(nlog^2n))

观察发现可以按(x_i)离线插入,维护凸包变成均摊(O(1)),复杂度(O(blogn))

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

线段树分治

线段树分治

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

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

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

线段树分治总结