BZOJ1052 BZOJ3760 覆蓋問題

2021-07-05 13:43:50 字數 773 閱讀 2971

原題位址

先說自己的逗比方法…

二分答案,把所有點用乙個最小的矩形「框」起來,易證矩形的其中乙個端點是最優解中正方形的乙個端點,然後列舉四個端點後遞迴處理,差不多了…

然後 olz黃學長的o(

n)做法

ac code:

#include 

#include

#include

using

namespace

std;

const

int n=20010;

const

int inf=1

<<30;

int n,l=0,r=inf;

bool h[n];

struct poip[n];

bool check(int l,int step)

return

1; }

int xl=inf,xr=-inf,yl=inf,yr=-inf,x,y;

bool ***=0;

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

}for(int i=1;i<=4;i++)

}***|=check(l,step+1);

for(int j=0;j<(int)tmp.size();j++) h[tmp[j]]=0;

}return ***;

}int main()

printf("%d\n",r);

return

0;}

bzoj1052 覆蓋問題

先二分答案,容易發現一定有乙個正方形覆蓋在角上 即有兩條邊在最x的地方 否則4個最x的點一定無法覆蓋,然後暴力確定即可 1 include2 using namespace std 3struct ji8 a 20005 9 int n,vis 20005 10 void bj int lx,int...

BZOJ1052 覆蓋問題(貪心)

bzoj 洛谷這題好神仙啊。很明顯可以看出來要二分乙個邊長。那麼如何ch eck che ck 呢?我們把所有點用乙個最小矩形覆蓋,那麼必定每個邊界上都至少存在乙個點,但是我們有 4 4 個邊界,但是只有 3 role presentation 3 3個矩形,意味著至少有乙個矩形卡住了兩個邊界,那麼...

bzoj1052 HAOI2007 覆蓋問題

一道簡單的二分 貪心,先找四個最大最小座標,以四個角中的乙個為左上角劃正方形,再找再劃,最後判斷剩下的點是否在乙個正方形內。ac code include include include include define ll long long using namespace std const ll...