JZOJ A組 紀念碑

2021-09-10 08:57:14 字數 2142 閱讀 2356

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

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

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

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

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

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

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

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

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

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

現學現賣掃瞄線!!

維護兩個指標l,r表示x軸選取的區間。

用線段樹維護y軸的建築物。

答案是min(建築物的空隙,r-l+1)

可以發現r向右移答案只會減小不會增加,所以當答案#include

#include

#include

#include

using

namespace std;

const

int maxn=

1e6+77;

struct t

tr[maxn*3]

;int tag[maxn*3]

,n,m,p,x[maxn][3

],y[maxn][3

];vector<

int> ad[maxn]

,dl[maxn]

;void

pushup

(int u)

if(tr[u]

.l==tr[u]

.r) tr[u]

.ls=tr[ld]

.ls+

(tr[ld]

.ls==tr[ld]

.r-tr[ld]

.l+1

)*tr[rd]

.ls;

tr[u]

.rs=tr[rd]

.rs+

(tr[rd]

.rs==tr[rd]

.r-tr[rd]

.l+1

)*tr[ld]

.rs;

tr[u]

.ass=

max(tr[ld]

.rs+tr[rd]

.ls,

max(tr[ld]

.ass,tr[rd]

.ass));

}void

build

(int st,

int ed,

int u)

void

ins(

int st,

int ed,

int l,

int r,

int v,

int u)

int mid=

(st+ed)

>>1;

if(l<=mid)

ins(st,mid,l,r,v,u*2)

;if(midins(mid+

1,ed,l,r,v,u*2+

1);pushup

(u);

}int

main()

build(1

,m,1);

int ans=

0,l=

1,r=1;

while

(r<=n)

ans=

max(ans,

min(r-l+

1,tr[1]

.ass));

while

(tr[1]

.assr++;}

printf

("%d"

,ans)

;}

紀念碑谷遊戲介紹

挑戰 challenges 紀念碑谷與計算科學 這是乙個充滿想象和驚喜的遊戲,遊戲中沒有特別明確的故事背景 大概是小公主艾達因好奇盜走了王國的神聖幾何,為了懺悔,她決定將這些神聖集合歸還 所以玩家能自由想象一切。這是乙個美妙而又奇怪的迷宮,它總會帶給你一幕幕的視覺震撼。可以說,在這裡,你不是在想方設...

提出乙個問題 《紀念碑谷》

沒有正交的相機的話,是這樣的 在isometirc game這篇文章裡,發現這種特殊角度的奇妙之處 沒有柱子的話,看起來就像這樣,我們其實分不清它的高度 錯覺柱上那個尖尖頭也是精髓所在 左下角那塊平台 包括柱子 直接增加了 x 6,y 6,z 6的移動距離 但是在遊戲正交的情況下,光線平行的,所以這...

掃瞄線 線段樹 JZOJ 4238 紀念碑

description 2034年,紀念中學決定修建校慶100周年紀念碑,作為傑出校友的你被找了過來,幫校方確定紀念碑的選址.紀念中學的土地可以看作是乙個長為n,寬為m的矩形.它由n m個1 1的正方形組成,其中左下角的正方形的座標為 1,1 右上角的正方形的座標為 n,m 其中有一些土地已經被用來...