HDU3265 掃瞄線 線段樹 區間並

2021-08-18 19:23:00 字數 995 閱讀 3606

傳送門:hdu3265

題意:n個海報,每個海報中間有個矩形的洞。問這n個海報覆蓋面積和是多少。

分析: 非常經典的題目了,掃瞄線+線段樹 進行 區間並操作 

既然海報內有塊矩形不能計算入內,只要把海報分為四塊不重疊的部分就好了。

重點是空間限制比較緊,交了若干次才a的。。改用unsigned short(0...65536) 儲存座標才a了。。

注意:若掃瞄線個數小於2直接輸出0,如果按常規的線段樹求區間和會返回re。。

截圖紀念一下這個讓我除錯了n久bug的題目。。

**如下:

#include #include using namespace std;

const int maxn = 4e5+10;

struct line

inline void cal(int u)

else

}void update(int u, line e)

if (e.y2 <= tr[lch(u)].rf) update(lch(u),e);

else if (e.y1 >= tr[rch(u)].lf) update(rch(u),e);

else

cal(u);

}}t;int x[10];

int main()

sort(line+1,line+tot+1);

sort(y+1,y+tot+1);

if (tot<2)

t.build(1,1,tot);

t.update(1,line[1]);

unsigned int ans = 0;

for (int i=2; i<=tot; i++)

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

}return 0;

}

hdu 3265 Posters 線段樹,掃瞄線

題意 給你n張矩形海報,之後每張矩形之中又挖去乙個小矩形,問你n個復合矩形的面積並 思路 我們把那個挖空的小矩形變換一下,變成4個矩形 就是這樣,之後就變成了4個小矩形之後求一下面積並就好了 上 吧 include include include include define lson l,m rt...

線段樹區間合併 掃瞄線

線段樹區間合併 掃瞄線 題目 求n個矩形面積並 includeusing namespace std typedef long long ll const int n 1e6 5 int t n 2 標記數量 int vis n 2 標記陣列 void update int root,int kl,...

線段樹 掃瞄線區間模板

線段樹 掃瞄線基礎模板 掃瞄線與普通的線段樹區別要認清,這裡線是連續的,其他的型別單點是離散的 include include include using namespace std int n const int maxn 10000 struct node void get int a,int ...