POJ 1177 Picture 矩形周長並

2021-08-26 19:09:41 字數 1296 閱讀 5902

題意很簡單,但是周長並比面積並又稍微麻煩了一些

這時候要開乙個numseg儲存豎邊的個數。

再開lbd,rbd分別表示邊界,這樣是為了幫助刪除重合的邊

/*

id: sdj22251

prog: subset

lang: c++

*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define maxn 22222

#define maxm 104444

#define inf 100000000

#define eps 1e-7

#define l(x) x<<1

#define r(x) x<<1|1

using namespace std;

struct seg

seg(int a, int b, int c, int d)

bool operator <(const seg &cmp) const

}seg[maxn];

struct node

tree[4 * maxn];

void up(int c)

else if(tree[c].left == tree[c].right)

tree[c].len = tree[c].numseg = tree[c].lbd = tree[c].rbd = 0;

else

}void make_tree(int s, int e, int c)

void update(int s, int e, int v, int c)

if(tree[c].mid >= s) update(s, e, v, l(c));

if(tree[c].mid < e) update(s, e, v, r(c));

up(c);

}int main()

sort(seg, seg + m);

int res = 0, last = 0;

make_tree(low, high, 1);

for(int i = 0; i < m; i++)

printf("%d\n", res);

return 0;

}

POJ 1177 Picture 矩形周長並

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

POJ 1177 Picture 矩形周長並

題意 給出 n 個矩形,可以相互覆蓋,求所有矩形合在一起的輪廓總長度。分析 先對所有矩形按左下角的y 座標排序,讓矩形的所有點向 x 軸投影,記錄所有的投影的x值,對x 排序,分段累加x 座標差值 如果 s i y1 up 說明兩個矩形沒有交集,即新的矩形沒有被前乙個矩形覆蓋到 res 2 righ...

POJ 1177 Picture(線段樹 掃瞄線)

description 求n個矩形的周長並 input 第一行為一整數n表示矩形個數,之後n行每行四個整數x1,y1,x2,y2表示該矩形左下端點與右上端點的橫縱座標 output 輸出這n個矩形的周長並 sample input 7 15 0 5 10 5 8 20 25 15 4 24 14 0...