题义为给定N个矩形,求其重叠的图形面积,该题采用线段树离散化y轴坐标,并且采用分割思想,只依据x坐标来进行分割。
我们将N个矩形化为N*2条线段来处理,该结构体中的成员变量为 x, yl, yh, 分别是x轴坐标,相对高低的y轴坐标,即线段的两个端点值。
1.将所有的线段排一次序,并将y轴所有坐标轴点排序并进行离散化;
2.在从左往右扫描每一条线段时,我们应该理解为此时我们将把该线段的右边区域认定为全部被覆盖;
3.查找该x轴坐标下被覆盖的y轴坐标的次数,因为一旦y轴被覆盖,则说明其右边无限长的区域被覆盖,如果得到 [y1,y2] 这段区间被覆盖了,那么该点到下一个相邻的x轴的坐标之间
的区域一定是被覆盖的,那么只要这段区间被覆盖2次或以上,这部分的面积就能够求出来了。
代码如下:
#include #include #include #include