树套树

好久都没有写过这个东西有点忘了啊。。。

重新学习了一波。。。

这个东西其实挺好理解也挺好写的

树套树是不支持区间修改的。。。

传统的区间加,区间查询可以用差分转化成单点修改

所以就不存在线段树上打lazy标记这个操作了(因为如果可以这么做就直接差分了)

1.线段树套线段树

2.线段树套平衡树

 #updata 11.7

上次没写。。

今天复习一下。。

上面说的 不支持区间修改上次听别人说的。。(区间修改的定义是两维都区间修改)

发现并不是这么一回事情

如果这个标记,可以永久化(也就是与时间顺序无关),那么可以支持区间修改

比如加法,单纯的取max 这些都是可以的

当然我觉得如果可以标记永久化就标记永久化比较好(写成down是可以的)

以区间加举例 怎么实现

注意现在由于我们要查找区间和,所以要分成两部分来处理

1.子树中的标记产生的影响

2.父亲上的标记产生的影响

修改:

对于1,我们每次要把路径上的点的对应区间都加上子树产生的贡献(相当于updata)sum1

对于2,我们在找到对应区间之后,给他标记一个修改值sum2

查询:

对于1,就是对应区间的sum1的和

对于2,就是父亲方向所有的sum2*区间长度

由于我没有在网上找到这题就不写了。。

BZOJ1513 和这题其实差不多的。。

注意他那个区间赋值本来是个时间依赖的操作

但是他保证了是不断变大的 所以等价于取max 就不是时间依赖了

luogu3332 zjoi k大数查询

这个是经典题目了

我们发现他其实并不是区间修改,因为一维是单点

感觉上把单点修改的放在第一维比较简单

bzoj4604

bzo3065

猜你喜欢

转载自www.cnblogs.com/yinwuxiao/p/9697392.html