扫描线的题就是求在一个二维平面上,多个矩形的覆盖面积,那么这个面积如何用线段树来维护呢?
下面解析请配合代码食用。
我们可以知道,线段树对于区间修改,求和上时间复杂度很低,因此,我们就用线段树来维护,x轴上我们需要的区间长度。

如图我们想要求的三个矩形的坐标
我们将它们画出来是这样的:

那么我们线段树维护的就是1-2,2-3,3-4,4-5,5-6这些区间的长度,那么长度是小数可以吗?
因为,我们在线段树中放的是区间的标记比如1-2这个区间我们在线段树中就叫它1号,那么这个一号的长度就算是小数也没有问题。
那么我们来看如何处理这些区间长度:

我们把得到的所有的x坐标的值按照升序排列在数组X中,我们想要i-j这一段,那么我们就用X[j+1]-X[i]来表示我们这段区间的长度。就得到的我们想要的值,在这里有一点需要强调一下:
我们得到的


2103

被折叠的 条评论
为什么被折叠?



