例題: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...