在乙個二維座標平面中,有 n 個矩形,每個矩形的邊都是平行於 x 軸或 y 軸的。給定這 n 個矩形的位置,這 n 個矩形之間可以相互覆蓋。
求這 n 個矩形所占用的平面總面積是多少。
輸入格式
第一行輸入乙個整數 n,表示平面中矩形的數量。(1≤n≤50000)
接下來 n 行,每行四個整數 x1, y1, x2, y2 表示每個矩形左下角的座標和右上角的座標。
這道題和矩形的周長並那題特別相似,用到的知識點也是一樣,本題也是由周長並那道題改動得來的。
#include
#include
#include
#include
using namespace std;
const
int n=
50010
;map<
int,
int> mp;
struct node
node
(int y,
int x1,
int x2,
int f):y
(y),
x1(x1),x2
(x2),f
(f)//建構函式
bool operator<
(node a)
}line[n<<1]
;struct ndtree[n<<3]
;int x[n<<2]
;void
pushup
(int p,
int l,
int r)
else
if(l==r)
else
}void
modify
(int p,
int l,
int r,
int s,
int e,
int f)
int mid=
(l+r)
>>1;
if(s<=mid)
modify
(p<<
1,l,mid,s,e,f);if
(midmodify
(p<<1|
1,mid+
1,r,s,e,f)
;pushup
(p,l,r);}
intmain()
sort
(line,line+
2*n)
;//橫線從小到大排序
sort
(x,x+
2*n)
;//橫線的端點儲存用於離散化
int m=
unique
(x,x+
2*n)
-x;for
(int i=
0;i) mp[x[i]
]=i+1;
long
long ans=0;
for(
int i=
0;i<
2*n;i++
) t1=tree[1]
.len;
ans+
=t1*t;
//last=tree[1].len;
//printf("t=%d t1=%d\n",t,t1);
}printf
("%lld\n"
,ans)
;return0;
//give me five
}
矩形的周長並 計蒜客
在乙個二維座標平面中,有 n 個矩形,每個矩形的邊都是平行於 x 軸或 y 軸的。給定這 n 個矩形的位置,這 n 個矩形之間可以相互覆蓋。求這 n 個矩形所組成的圖形的周長是多少。輸入格式 第一行輸入乙個整數 n,表示平面中矩形的數量。1 n 50000 接下來 n 行,每行四個整數 x1,y1,...
矩形周長並,矩形面積並,矩形面積交
目錄 矩形周長並 矩形面積並 矩形面積交 includeusing namespace std const int maxn 50004 2 struct nodesegtree maxn 2 struct lineline maxn bool cmp line a,line b void cal ...
矩形面積並
hdu1542 include include include include using namespace std const int size 505 int add size 2 add為區間標記,與懶惰標記類似 double x size 2 sum size 2 struct node ...