扫描线的学习
参考了以下博客:
线段树+扫描线(有关扫描线的理解)
扫描线
做题:洛谷P5490 扫描线
#include <bits/stdc++.h>
#define ios std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
using namespace std;
typedef long long ll;
const int maxn = 1e6 + 10;
int mark[maxn<<2];//记录某个区间的下底边个数
ll sum[maxn<<2];//记录某个区间的下底边的总长度
ll ha[maxn];//对x数组进行离散化,否则x为浮点数却很大无法进行线段树
//以横坐标作为区间,对横坐标线段进行扫描
//扫描的作用是每次更新下底边总长度和下底边个数,增加新面积
struct seg{
//扫描线
int l, r, h;
int d;
seg(){
}
seg(int ll, int rr, int hh, int dd):l(ll), r(rr), h(hh), d(dd){