這其實是計算幾何的一部分。一般被用來解決圖形面積、周長等問題。
求給定的 \(n\) 個矩形的面積並
如圖:(從左到右掃)
若乙個矩形的左下頂點座標為 \((x_1,y_1)\) ,右上頂點座標為 \((x_2,y_2)\)
模板**:
#includeusing namespace std;
#define int long long
const int n=1e5+5;
int n;
double ls[n<<1];
struct linea[n<<4];
struct nodetr[n<<4];
bool cmp(line x,line y)
void pushup(int node)
void change(int node,int l,int r,int x)
change(node<<1,l,r,x);
change(node<<1|1,l,r,x);
pushup(node);
}signed main()
n<<=1;//後面用起來方便
sort(a+1,a+n+1,cmp);
sort(ls+1,ls+n+1);//離散化
int tot=unique(ls+1,ls+n+1)-ls-1;//去重
ls[tot+1]=0x3f3f3f3f;
build(1,1,tot);//建樹
int ans=0;
for(int i=1;i求周長
線段樹 掃瞄線
pku 1151 hdu1542 atlantis 矩形面積並 題意 給出n個矩形,每個矩形給出左下角座標,右上角座標。然後求矩形並的總面積 思路 浮點數先要離散化 然後把矩形分成兩條邊,上邊和下邊,對橫軸建樹,然後從下到上掃瞄上去,用cnt表示該區間下邊比上邊多幾個,sum代表該區間內被覆蓋的線段...
掃瞄線 線段樹
問題描述 小明的家旁邊有條河流,但最近,周圍的三個工廠開始向這條河排放汙水,這條河的一部分被汙染了,被乙個工廠汙染的部分可以看做乙個矩形,現在小明想知道這條河被汙染的面積是多少。輸入 第一行乙個整數t,表示有多少組資料,之後每一組資料報括三行,每一行有lx,ly,rx,ry四個整數,表示被乙個工廠汙...
線段樹 掃瞄線
掃瞄線問題主要利用了線段樹。因為矩形的並集比較難算,所以我們可以用 sum 掃瞄線被截長度 所掃瞄的高度 來求和。而這樣做發現可以用線段樹來優化,具體優化方式如下 所掃瞄的高度比較好求,主要是掃瞄線被截長度需要優化。我們可以設橫邊有乙個a權值,如果該邊是矩陣的下邊則設為1,相反就設為 1,這樣如果一...