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