问题引入
求
n
n
n 个矩形的面积并。
1
≤
n
≤
1
0
5
1\leq n\leq 10^5
1≤n≤105。
离散化坐标
首先,通过离散化,可以让矩形的坐标从 1 0 9 10^9 109 级别降至 1 0 5 10^5 105 级别。
尽管如此,开一个 N 2 N^2 N2 的二维数组来存储坐标系里的每个点,仍然还会导致空间超限。
扫描线
本章节中,部分图片来自这里。
看到图中的虚线了吗?想想有一条平行于 y 轴的直线从左往右扫过图形,那么这
n
n
n 个矩形的面积并就转化成:每个时刻这条直线与图形相交的线段长之和。
我们发现,一个时刻,相交的线段长可以用线段树维护并算出来,于是我们只要先把矩形排序,让这条线从左往右扫一次图形就统计出面积交了。时间复杂度
O
(
n
log
n
)
O(n\log n)
O(nlogn)。
例题
求 n n n 个矩形的面积并。 1 ≤ n ≤ 1 0 5 1\leq n\leq 10^5 1≤n≤105。
参考代码
(略)