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 其中有一些土地已經被用來...