Luogu5490 模板 掃瞄線

2022-05-17 14:51:08 字數 643 閱讀 5180

根據橫座標或縱座標排序另一方向的線段,進入的賦值\(+1\),離開的賦值\(-1\)

注意一下,線段樹的構造中,乙個位置表示的是乙個間隔,即\(a_1\)表示間隔\([1,2]\),間隔個數為點的個數\(-1\)

如果用點來建,乙個點根本無法計算貢獻

\(c++ code:\)

#include#include#include#define ll long long

#define n 200005

using namespace std;

int x,y,_x,_y,n,cnt,cc;

int a1[n],a2[n],b1[n],b2[n],c[n];

ll ans;

struct node

int main()

cnt=n << 1;

sort(c+1,c+cnt+1);

cc=unique(c+1,c+cnt+1)-c-1;

sort(w+1,w+cnt+1);

for (int i=1;i<=cnt;i++)

for (int i=1;iprintf("%lld\n",ans);

return 0;

}

P5490 模板 掃瞄線 掃瞄線

題目描述 求 n 個矩形的面積並。輸出格式 一行乙個正整數,表示 n 個矩形的並集覆蓋的總面積。発生 線段樹開小了,因為n變成了兩倍,線段樹就得開4 2 8倍 對每一根掃瞄線,維護所截得的長度,每次乘以兩根掃瞄線高度差就得到了面積並 截得長度用線段樹維護即可 注意線段樹需要離散化 include i...

P5490 模板 掃瞄線

n 給定n nn個矩形左下角和右上角的座標,求該矩形面積並 資料範圍 n 1 05n leq 10 5 n 105sol utio nsolution soluti on將每個矩形看做兩條平行於y yy軸的線段,掃瞄過去即可 需要注意的是給出來的是點,而我們維護的是線段 時間複雜度 o n log ...

Luogu P5490 模板 掃瞄線

求 n 個矩形的面積並。本題計算面積並在掃瞄線中較為簡單。拋開離散化,我們著重講掃瞄線。與上圖為例,思考怎麼計算它們的幾何並。用乙個陣列來存資訊,覆蓋了就標 1,否則標 0。暴力既好想又好寫,但當座標一大,時空都會超。用總面積減去重合面積。但只侷限於重合少的題。將圖形重新分割成乙個個規則的矩形,用線...