掃瞄線 線段樹 JZOJ 4238 紀念碑

2022-04-30 19:57:08 字數 2011 閱讀 5005

description

2023年,紀念中學決定修建校慶100周年紀念碑,作為傑出校友的你被找了過來,幫校方確定紀念碑的選址.

紀念中學的土地可以看作是乙個長為n,寬為m的矩形.它由n* m個1*1的正方形組成,其中左下角的正方形的座標為(1,1),右上角的正方形的座標為(n, m).其中有一些土地已經被用來修建建築物,每一幢建築物都可以看做是乙個左下角為(x1,y1),右上角為(x2,y2)的矩形.

紀念碑可以看作是乙個正方形.校方希望你找出一塊最大的正方形區域供他們參考.

input

每一組資料的第一行包含三個整數n,m和p,分別表示學校的長,寬以及建築物的數量.

接下來的p行,每行包含四個整數x1,y1,x2,y2,分別表示每一幢建築物左下角以及右上角的座標.

output

輸出乙個數,表示可能的最大邊長.

sample input

13 5 8

8 4 10 4

4 3 4 4

10 2 12 2

8 2 8 4

2 4 6 4

10 3 10 4

12 3 12 4

2 2 4 2

sample output

3
data constraint

對於30%的資料,p<=1000.

對於70%的資料,p<=30000.

對於100%的資料,p<=400000,m,n<=1000000.

一看什麼矩陣重疊啊什麼的先考慮一下掃瞄線

然後我們用掃瞄線+線段樹維護

掃瞄線確定橫向距離,線段樹確定縱向最大空區間

挺好搞的,線段樹三個值,乙個是從左往右的最大空區間,另乙個從右往左,還有乙個最大的

更新一下就行,不需要下傳標記,因為掃瞄線遲早會把它去掉

#include #include 

#include

using

namespace

std;

#define lson (x<<1)

#define rson ((x<<1)+1)

const

int n=1e6+10

;struct

seg t[4*n];

struct

interval ;

vector

add[n],del[n];

intn,m,p;

void update(int

x)

if (t[x].len==1

) t[x].v[

0]=t[lson].v[0]+(t[lson].v[0]==t[lson].len)*t[rson].v[0

]; t[x].v[

1]=t[rson].v[1]+(t[rson].v[1]==t[rson].len)*t[lson].v[1

]; t[x].v[

2]=max(t[lson].v[1]+t[rson].v[0],max(t[lson].v[2],t[rson].v[2

]));

}void build(int x,int l,int

r) void change(int x,int l,int r,int xl,int xr,int

k)

int mid=l+r>>1

;

if (xl<=mid) change(lson,l,mid,xl,xr,k);

if (mid1

,r,xl,xr,k);

update(x);

}int

main() ),del[x2].push_back((interval));

build(

1,1,m);

int l=1,r=1,ans=0

;

while (r<=n)

r++;

}printf(

"%d\n

",ans);

}

view code

JZOJ 6276 樹 掃瞄線 線段樹

傳送門 有一棵無根樹,現在有m mm個點對x,y x,yx,y,要求在任意u,v u,vu,v的簡單路徑上不能既經過x xx又經過y yy問一共有多少路徑滿足要求 正著推看起來思維難度很高,所以我們喜聞樂見的反著推,找出不合法的方案數就好了 我們先求出無根樹的dfs dfsdf s序,在輸入每個點對...

線段樹 掃瞄線

pku 1151 hdu1542 atlantis 矩形面積並 題意 給出n個矩形,每個矩形給出左下角座標,右上角座標。然後求矩形並的總面積 思路 浮點數先要離散化 然後把矩形分成兩條邊,上邊和下邊,對橫軸建樹,然後從下到上掃瞄上去,用cnt表示該區間下邊比上邊多幾個,sum代表該區間內被覆蓋的線段...

掃瞄線 線段樹

問題描述 小明的家旁邊有條河流,但最近,周圍的三個工廠開始向這條河排放汙水,這條河的一部分被汙染了,被乙個工廠汙染的部分可以看做乙個矩形,現在小明想知道這條河被汙染的面積是多少。輸入 第一行乙個整數t,表示有多少組資料,之後每一組資料報括三行,每一行有lx,ly,rx,ry四個整數,表示被乙個工廠汙...