咱们都知道区间更新时候有个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 。
另外。针对这种问题。