給定一些二維空間上的矩形,求它們的面積並.一道線段樹+掃瞄線的板子題
然而即使我會打了,也不能靈活運用這種演算法。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...