Segment Tree 线段树.pptVIP

  • 6
  • 0
  • 约6.47千字
  • 约 35页
  • 2018-07-01 发布于河南
  • 举报
Segment Tree 线段树

例一:POJ 1177 picture 回到原问题,首先我们考虑纵向的离散区间。 我们从左到右依次扫描每个离散区间。 如上,考察第一个离散区间。蓝色的线段显然要算入最后的“轮廓长度”。我们把蓝色线段插入线段树。 删除线段[c,d]的操作,只需要将 Tree[v].Cover ← Tree[v].Cover + 1 改成 Tree[v].Cover ← Tree[v].Cover – 1 即可。 与引例中计算SUM的过程段类似地分析,不难得到线段树中插入和删除线段的时间复杂度都是O(logn) 例一:POJ 1177 picture 在第二个区间我们加入了另一个矩形的左边界,如右图蓝色线段。把这条线段加入到线段树中。但是用圆形圈起来的部分不应该算到“轮廓长度”里面去。究其原因,因为圆形圈起来的部分和之前已经插入的线段重合了。也就是说每插入一条新线段,只有不和之前已插入线段重合的部分才应该被算到“轮廓长度”里面去。 例一:POJ 1177 picture 接着考察第三个区间,我们面对的是一个矩形的右边界,因此我们要把它对应的绿色线段从树中删除。 右图的蓝色线段中,圆形圈起来的部分不算到轮廓里面去。究其原因,是因为这个部分和除被删除线段之外的线段有交集。 例一:POJ 1177 picture 综合前面的分析,我们得到: 每次

文档评论(0)

1亿VIP精品文档

相关文档