使用带有延迟传播的细分树来获取重叠间隔的总长度

时间:2018-07-03 03:39:58

标签: algorithm

所以这是问题所在:给定一组间隔[a,b],其中a,b是整数,0 <= a

我的解决方法是使用细分树,其节点为

class Segnode:
    def __init__(self,start,end):
        self.start,self.end = start,end
        self.left,self.right = None,None
        self.layer,self.cover = 0,0
        self.lazy = 0

其中layer记录有多少间隔覆盖此节点(例如:如果我们有一组[0,3),[1,3),[1,2),则Segnode(1,3)将具有第2层,因为只有[0,3)和[1,3)完全覆盖了它); Cover记录此节点覆盖的部分的长度(例如,上一个示例中的Segnode(1,3)将具有Cover 2)。

但是问题是我无法提出一种正确的LAZY更新树的方法(如果我们不使用延迟传播,那么这个问题就微不足道了,但是时间复杂度可能达到O(n),其中n可以每次操作为10 ^ 5)。有人可以帮我这部分吗?有没有正确,懒惰的方法?

非常感谢您。

0 个答案:

没有答案