线段树 区间更新 和 查找时更新时候的探讨。

咱们都知道区间更新时候有个lazy 标志。hash

而这个lazy 标志 咱们要使得其能够理论重叠。date

即便操做不能重叠。也尽量让其重叠。gc

好比:一道修改区间>x的值为gcd(x,val)的操做题。查询

首先针对查找区间>x 这种查找。咱们在节点上存储 区间最大值 做为剪枝。push

另外针对求gcd(x,val)操做。用向量存储X的每一个阶段的值。gcd

另外这个题还有另一个操做 是区间覆盖。颜色

那么明显的。当该操做要覆盖上去的时候要清除原来的向量中的全部内容。

 

这即是操做之间的关系。

另外谨记。操做是针对当前节点的下面的节点的。

也就是说。你查找到的节点。实际上是在update中更新了。

然后续的节点 都是经过pushdown。

 

讲讲区间覆盖。

1:每每用hash来判断。创建关系。好比能看到几种颜色。好比以前那个三角形线段。 要不要 进向量。

而三角形那个 有趣之处在于hash 的重复利用。。

2:区间覆盖 好比看得见看不见。要注意边境的处理。

离散化以后  你懂的。

 

注意多种操做的时候 覆盖操做 和别的操做的关系。

每每有覆盖 就没有别的操做。

而别的操做 操做到有覆盖的时候。 改覆盖标志便可。

   另外。还有分当时有本身的操做 和 没有。

 

若是不存。 能够直接更新到下面。左边孩子 和 右边孩子都要更新了。

 

区间合并。

求最长连续上升序列。

查询的时候  返回结果要注意一点。 并不是。+= 。

 

括号匹配。

肯定 从头开始的每段连续和均>=0。

这个作法是:每段连续和的最小值。

这个最小值的更新。

Min(左边min,左边sum + 右边min)

另外。针对这个有转换问题。转换以后。最小值。变成了最大值。因此还得另外维护最大值。

长个心眼。

且整个和 为 0 。

 

 

另外。针对这种问题。

转换啊。什么的。标记繁多。记住一个一个 都不要漏

相关文章
相关标签/搜索