洛谷P5490 模板 掃瞄線

2022-07-01 11:51:08 字數 1296 閱讀 6185

題鏈

對於mark的引入:

如果不引入直接加,會出現某段區間被重複加的現象,要保證若某段區間被覆蓋,則只需要加一次。

#include #include #include #include #include #include //#pragma gcc optimize("o2")

using namespace std;

#define ll long long

#define ll long long

#define ull unsigned long long

#define ls rt<<1

#define rs rt<<1|1

#define one first

#define two second

#define ms 100009

#define inf 1e18

#define mod 99999997

#define pi acos(-1.0)

#define pair pair#define eps 1e-9

ll n,m,k;

struct nodeline[ms*2]; // 記錄一排排的線

ll hx[ms*2]; // 對 x 軸上的座標 hash

ll mark[ms<<3]; // 標記區間是否被覆蓋

ll sum[ms<<3]; // 主要用sum[1]計算被覆蓋區間的總和

ll tli,thx;

bool cmp(node a,node b)

void push_up(int rt,int l,int r)

void update(int l,int r,int l,int r,int rt,ll val)

int m = l+r>>1;

if(m >= l) update(l,r,l,m,ls,val);

if(m < r) update(l,r,m+1,r,rs,val);

push_up(rt,l,r);

}int main();

hx[++tli] = x2;

line[tli] = ;

} sort(hx+1,hx+tli+1);

sort(line+1,line+tli+1,cmp);

thx = 1;

for(int i=2;i<=tli;i++)

ll ans = 0;

for(int i=1;icout << ans << endl;

return 0;

}

洛谷 P5490 模板 掃瞄線

求 n nn 個矩形的面積並 思路 掃瞄線 include include include define ls x 1 define rs x 1 1 define maxn 1000010 using namespace std typedef long long ll int n,x1,x2,y...

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 ...