POJ 1151 線段樹 掃瞄線

2021-07-09 05:16:05 字數 975 閱讀 1601

cf上遇到一題掃瞄線,二話不說立刻補。

該類題目計算座標中邊平行於x,y軸的矩形的覆蓋面積。

這樣可以通過離散化x座標,然後建立區間,通過線段樹管理。

然後每條掃瞄線更新區間覆蓋和計算面積。

對於上面的矩形就有4條掃瞄線,有3個區間。

第一條掃瞄線覆蓋1,2區間。

第二條掃瞄線覆蓋2,3區間。

第三條掃瞄線是第乙個矩陣的下邊,所以取消1,2區間的覆蓋,但因為區間2還有第二條掃瞄線仍然覆蓋區間2,故總覆蓋依然是2,3區間。

如何判斷區間是否被覆蓋,可以通過區別矩陣上下邊來達成,上邊cover值為1,下邊cover值為-1,則被覆蓋的區間覆蓋值不為0。

**如下:

#include #include #include #include using namespace std;

#define lson(i) i*2

#define rson(i) i*2+1

const int maxn=4222;

struct node

node(double x1,double x2,double y,int c):x1(x1),x2(x2),y(y),c(c){}

bool operator

}line[maxn];

double x[maxn];

int flag[maxn];

double sum[maxn];

int ql,qr;

int bfind(int l,int r,double v)

sort(x,x+cot);

sort(line,line+cot);

int k=0;

double ans=0;

for(int i=1;i

POJ 1151線段樹 離散化 掃瞄線

poj1151 一開始做的時候,我還用以前做的離散化的方法來離散化這題中的資料,但是後來才發現,它裡面包含了浮點數。不能直接的離散化!必須轉化為整數後,再來影射.又學習了一種離散化的方法。還有就是掃瞄線的方法,第一次聽說,開始看這題的正確 的時候,看半天沒看懂。耽誤了好久時間。後來終於明白了什麼是掃...

poj 1151矩形面積並 線段樹

title poj 1151矩形面積並 線段樹 date 2018 10 30 22 35 11 tags 線段樹問題裡的另乙個問題,矩形面積並,之前看lazy更新時看到下面這個的講解,一大堆文字還有一大堆的圖,當時果斷跳過,今天花了一下午加一晚上的時間看了看這塊知識,然後嘗試自己寫出 算是簡單的了...

poj 1151 線段樹求矩形面積的並

其實掌握了基本思路就沒問題了,不過還是能學到一些思想的。比如說,離散化,掃瞄線,計算幾何裡的線段樹建樹的不同。尤其是要注意離散化,許多線段樹問題都要離散化才能做,否則超記憶體。這題的離散化就是把座標的範圍,用存放它們的下標來表示。這樣一來範圍就小多了,然後每個節點表示的範圍就是這兩個下標 存放的對應...