其實掌握了基本思路就沒問題了,不過還是能學到一些思想的。比如說,離散化,掃瞄線,計算幾何裡的線段樹建樹的不同。
尤其是要注意離散化,許多線段樹問題都要離散化才能做,否則超記憶體。這題的離散化就是把座標的範圍,用存放它們的下標來表示。
這樣一來範圍就小多了,然後每個節點表示的範圍就是這兩個下標 存放的對應值之間的範圍。
掃瞄線的方法見這裡:
這個部落格講的雖然是周長,但是掃麵線的思想是一樣的。
本題**如下:
#include#include#include#includeusing namespace std;
#define max 111
int n;
double ans=0.0;
struct node
;struct line
;node node[max*6];
line line[max*3];
double y[max*3];
int cmp(line a,line b)
void update(line l,int k)
update(l,k*2);
update(l,k*2+1);
callen(k);
}int main()
sort(line+1,line+t,cmp);
sort(y+1,y+t);
build_tree(1,t-1,1);
ans=0;
for(i=1;i
poj 1151矩形面積並 線段樹
title poj 1151矩形面積並 線段樹 date 2018 10 30 22 35 11 tags 線段樹問題裡的另乙個問題,矩形面積並,之前看lazy更新時看到下面這個的講解,一大堆文字還有一大堆的圖,當時果斷跳過,今天花了一下午加一晚上的時間看了看這塊知識,然後嘗試自己寫出 算是簡單的了...
矩形面積並(POJ 1151)
給你n個矩形,求這些矩陣的面積並n 掃瞄線思路 離散化 線段樹維護 關於掃瞄線 可以看下這篇部落格 關於離散化 由於座標範圍較大,需要使其更 緊密 這樣才能用線段樹處理 離散化的核心思想就是相對大小不變且能通過現在的值確定之前的值 所以離散化的方法就是 以y軸座標為例 將y軸座標塞入id陣列 2 n...
POJ1151 離散化求矩形面積的並
第一道離散化的題目,雖然是水題,不過還是很高興。include include include using namespace std struct rect define max 103 1 rect a max 1 double x max y max bool flag max max int...