矩形周長並

2021-08-28 13:46:29 字數 1511 閱讀 1231

例題:hdu1828

題意:裸題

#include

using namespace std;

#define lson rt<<1

#define rson rt<<1|1

const

int maxn =

10005

;const

int inf=

1e9+7;

struct node

node

(int x1,

int x2,

int h,

int sta):x1

(x1),x2

(x2),h

(h),

sta(sta)

bool operator <

(const node &a)

const

}p[maxn<<1]

;int x[maxn<<2]

,lazy[maxn<<2]

;//記錄每個矩形上下兩根線,一共2n根線。

int tree[maxn<<2]

,times[maxn<<2]

;//tree記的是橫線的長度,times記的是豎線出現的次數

bool lb[maxn<<2]

,rb[maxn<<2]

;//記錄邊界

void

pushup

(int rt,

int l,

int r)

//向上更新

else

if(l==r)lb[rt]

=rb[rt]

=false,times[rt]

=tree[rt]=0

;//如果這個區間是乙個點,就沒有意義,直接全部置為0

else

//剩下的情況

}void

updata

(int rt,

int l,

int r,

int x,

int y,

int v)

//這裡沒有什麼好解釋的

int mid=

(l+r)

>>1;

if(x<=mid)

updata

(lson,l,mid,x,y,v);if

(y>=mid+1)

updata

(rson,mid+

1,r,x,y,v)

;pushup

(rt,l,r);}

intmain()

n<<=1;

sort

(p+1

,p+1

+n);

//對水平的線按照y公升序排

int ans=

0,tmp=0;

for(

int i=

1;i<=n;i++

)printf

("%d\n"

,ans);}

return0;

}

矩形周長並,矩形面積並,矩形面積交

目錄 矩形周長並 矩形面積並 矩形面積交 includeusing namespace std const int maxn 50004 2 struct nodesegtree maxn 2 struct lineline maxn bool cmp line a,line b void cal ...

POJ 1177 矩形周長並

參考部落格 方法 把矩形分成橫線和豎線去處理,可知是完全相同的操作,我們來講下怎麼算出橫線部分,豎線部分就是照搬即可。將橫線儲存在乙個表中,按橫線所處的豎直位置排序 公升序 另外每條橫線帶乙個標記值,原矩形的下線為1,上線為 1 對應過去就是插入線段和刪除線段 從低到高掃瞄橫線,沒掃到一條橫線就能計...

POJ 1177 Picture 矩形周長並

題意很簡單,但是周長並比面積並又稍微麻煩了一些 這時候要開乙個numseg儲存豎邊的個數。再開lbd,rbd分別表示邊界,這樣是為了幫助刪除重合的邊 id sdj22251 prog subset lang c include include include include include incl...