poj 1177 Picture(線段樹周長並)

2022-05-16 23:39:13 字數 993 閱讀 8213

題意:給你n個矩形問你重疊後外邊緣總共多長。

周長並與面積並很像只不過是處理的時候是   增加的周長=abs(上一次的線段的長度-更新後線段的長度)

然後分別處理一下豎著的邊和橫著的邊就好了即建兩次樹就好。

就是一道典型的周長並問題,可以拿來練練周長並的寫法。

#include #include #include #include #include using namespace std;

typedef long long ll;

const int m = 1e5 + 10;

struct ss s1[m << 1] , s2[m << 1];

struct tnt t[m << 4];

bool cmp(ss a , ss b)

void build(int l , int r , int p)

void pushup(int p)

else if(t[p].l == t[p].r)

else

}void updata(int l , int r , int p , int ad)

if(mid >= r)

else if(mid < l)

else

pushup(p);

}int main()

sort(s1 + 1 , s1 + 1 + 2 * n , cmp);

sort(s2 + 1 , s2 + 1 + 2 * n , cmp);

int l , r;

build(1 , 2 * m , 1);

ll ans = 0;

for(int i = 1 ; i <= 2 * n ; i++)

build(1 , 2 * m , 1);

for(int i = 1 ; i <= 2 * n ; i++)

printf("%lld\n" , ans);

return 0;

}

POJ 1177 Picture 矩形周長並

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

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...