笔记汇总
扫描线,解决的是 按顺序扫描一张图 的问题,若朴素,时间复杂度较高。
如果,这张图上有一些关键图形,我们则可以着重扫描这类信息,从而减少时间。
但是,如果这些图形信息有一些多元关系,就要求我们得枚举所有信息依次判断,增加时间。
在一维判断中,排序有时可以降低了这类问题的时间。
二维,显然是等同的,但若是建轴,较于一维,非同类信息会增加。
故而找到这些信息的关系,是至关重要的。
沿轴的信息,已被排序,通常较好划分出去。
另一维则困难一些。
这时,我们要读懂什么时候会增加,什么时候会减少(或许与沿轴信息有关)。
但请记住,这一维的信息是乱的,我们不能直接 加入答案,(免得违反信息关系)
而是 先储存 以便之后 判断,最好是简单信息。
所以,要找一个媒介进行快速记录(同样也能记录其它信息)。
我们选择了线段树,同时,选用 差分法 在轴方向确定边界。
矩形
排序(离散)、x方向建轴、y方向建线段树、记录y方向关系、应用差分法,按x方向枚举。
矩形面积
由上,我们可以知道在x轴一点上,y段上有多少被矩形占据。
最终,按x方向顺序枚举(矩形横向信息),由面积公式算出答案。
矩形周长
我们可以轻松求出所有矩形的宽之和,当然也可以同理求出长之和。
但同学们肯定对此不屑一顾,所以,我讲点难的。
我们知道,扫描线是以x轴为基平移的,如果,我们知道扫描线每次平移覆盖多少线段。
就可以得到答案。
那么,什么时候会覆盖线段,当然是经过这条线左端点,未达右端点时。
这可以在更新线段树同时判断,为了避重,需作为线段树的附加信息。