矩形的面積並 計蒜客

2021-09-10 13:08:21 字數 1720 閱讀 8685

在乙個二維座標平面中,有 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 ...