題意:給你n個矩形,求它們的面積,重復的不重復計算
思路:用線段樹的掃描線完成,將X坐標離散化後,從下到上掃描矩形,進行各種處理,看代碼注釋把
#include#include #include #include #include using namespace std; typedef long long ll; const int maxn=1e3+10; #define mm(a) memset(a,0,sizeof(a)) int num1[maxn*4]; double num[maxn*4],X[maxn*4]; struct edge{ double l,r,h; int s;//s為1是下邊,s為-1是上邊 edge(){}; edge(double a,double b,double c,int d) : l(a),r(b),h(c),s(d){} bool operator<(const edge &n)const{ return h >1; if(l<=t) update(l,r,add,le,t,node<<1); if(r>t) update(l,r,add,t+1,ri,node<<1|1); pushup(le,ri,node); } int main(){ int n,t=1; while(scanf("%d",&n)!=-1){ if(n==0) break; double a,b,c,d; int k=0; for(int i=0;i