裸的掃瞄線,學習掃瞄線的題目。具體掃瞄線的原理我不講了,我是看大神們的部落格懂得,就算寫也沒大神屌。下面我給出我的**,裡面的注釋是我認為比較重要的地方
#include #include#include#includeusing namespace std;
const int max=210;
int n;
double y[max];
double sum=0;
typedef struct
}node;
node no[max];
typedef struct
}p;p per[4*max];
bool cmp(const node &n1,const node &n2)
void update(int id,node node)
if(per[id<<1].realright>=node.y2)
update(id<<1,node);
else
if(per[id<<1|1].realleft<=node.y1)
update(id<<1|1,node);
else
get_len(id);
}int main()
sort(no,no+t,cmp);
sort(y,y+t);
build(1,0,t-1);
printf("test case #%d\n",num++);
update(1,no[0]);
for(int i=1;iprintf("total explored area: %.2lf\n\n",sum);
}return 0;
}
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...
HDU 1542 掃瞄線 線段樹優化
有些需要說明的地方 以前寫線段樹時線段樹的每個葉節點為乙個數字,代表乙個區域 7 代表第七個單位長度區域 本題不同在於,最小單位區域必須有兩點代表 2 3 代表從2到3 的乙個區域 上篇掃瞄線演算法複雜度為o n 2 本題用離散化法加線段樹優化為nlog n include include incl...