線段樹 掃瞄線 HDU1542 Atlantis

2022-05-27 16:15:11 字數 1026 閱讀 5770

給定一些二維空間上的矩形,求它們的面積並.

一道線段樹+掃瞄線的板子題

然而即使我會打了,也不能靈活運用這種演算法。qaq

遇到題還是不太會.

但是這種板子題還是隨隨便便切的.

時間特別特別多的話,就練線段樹!(flag)

這裡放下**好了,網上講解有很多.就不寫了 qwq

**

#include#include#define ls o<<1

#define rs o<<1|1

#define r register

using namespace std;

struct code

inline void up(int o)

void change(int o,int l,int r,int del)

int mid=(tr[o].l+tr[o].r)>>1;

if(r<=mid)change(ls,l,r,del);

else if(l>mid) change(rs,l,r,del);

else change(ls,l,mid,del),change(rs,mid+1,r,del);

up(o);

}int main()

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

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

int new_n=1;

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

if(x[new_n]!=x[i])x[++new_n]=x[i];

build(1,1,new_n);

double ans=0;

for(r int i=1;i<=tot;i++)

printf("test case #%d\n",++cas);

printf("total explored area: %.2f\n\n",ans);

}}

hdu1542(線段樹 掃瞄線)

裸的掃瞄線,學習掃瞄線的題目。具體掃瞄線的原理我不講了,我是看大神們的部落格懂得,就算寫也沒大神屌。下面我給出我的 裡面的注釋是我認為比較重要的地方 include include include includeusing namespace std const int max 210 int n ...

hdu 1542 掃瞄線 線段樹

題目大意 求矩形面積的並 思路 按y軸排序,然後將x投影到線段樹上做乙個線段覆蓋問題即可 注意 為了避免重複,線段座標右端點是開區間,更新時需要加上1 include include include include include define fo i,a,b for int i a i b i ...

hdu1542(線段樹 掃瞄線)

題目連線 又看到了幾個月前做的題,感覺那時候就是個sb 也怪自己剛開始沒搞清楚線段樹,瞎摸索 用連續線段樹很好理解這個題,之前的 稍微改了一下就好理解多了 1 include2 include3 include4 define lson l,m,rt 1 5 define rson m,r,rt 1...