扫描线
焯,我tm以为这玩意很高深,看了半天,tm很简单
核心就是我们要求一堆矩形的面积并or周长和,直接标记vis的话,我们的数组得开到 \(10^9 \times 10^9\)
但是我们发现,其实我们可以找一条竖直方向的线从左侧扫到右侧,那么我们就不需要考虑那么多了,我们只需要知道当前段是否为1,等于是把矩形拆成很多很多段,然后分别进行查询

我们发现每次我们等于是在进行区间加减操作,这个就很明显了吧,用线段树维护,每次查一下整个区间上有多少个点的 \(val > 0\),乘上横坐标长度即可
具体实现时,我们考虑用四元组 \(x_1,y_1,y_2,tag=1\) 和 \(x_2,y_1,y_2,tag=-1\) 来分别表示一个矩形的两个端点
我们进行离散化后直接用线段树维护线段长度
/*
BlackPink is the Revolution
light up the sky
Blackpink in your area
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include