2 条题解
-
0
何老师 (root) LV 0 MOD @ 2025-09-16 16:11:28
离散+切割
把所有Ai,Bi存储在cut[1]..cut[N+N]中;
对cut[]由小到大排序,则cut[i]..cut[i+1]就是一条离散线段
对于cut[i]..cut[i+1],在所有包含这条离散线段的矩形中找一个最高的
最为离散矩形cut[i]..cut[i+1]的高度
然后算出所有离散矩形的面积和即可!
-
02022-05-27 10:28:42@
很经典的题,通解是用线段树搞,但是从cqz神犇那里学到一招,排序后用并查集做。
考虑按照矩形的高度由高到低排序,则后面的矩形一定无法覆盖掉前面矩形的部分。
那么我们设f[i]为覆盖了i坐标这点的所有矩形的右边界,则用并查集维护即可。
但注意坐标范围极大,无法一个个扫描坐标计算,所以离散化一下再按照上述思路做。
- 1