BZOJ 1052 二分答案 解題報告

2021-08-03 10:42:26 字數 1409 閱讀 8658

1052: [haoi2007]覆蓋問題

description

某人在山上種了n棵小樹苗。冬天來了,溫度急速下降,小樹苗脆弱得不堪一擊,於是樹主人想用一些塑料薄

膜把這些小樹遮蓋起來,經過一番長久的思考,他決定用3個l*l的正方形塑料薄膜將小樹遮起來。我們不妨將山建

立乙個平面直角座標系,設第i棵小樹的座標為(xi,yi),3個l*l的正方形的邊要求平行與座標軸,乙個點如果在

正方形的邊界上,也算作被覆蓋。當然,我們希望塑料薄膜面積越小越好,即求l最小值。

input

第一行有乙個正整數n,表示有多少棵樹。接下來有n行,第i+1行有2個整數xi,yi,表示第i棵樹的座標,保證

不會有2個樹的座標相同。

output

一行,輸出最小的l值。

sample input4

0 1

0 -1

1 0

-1 0

sample output

hint

100%的資料,n<=20000

【解題報告】

二分l,貪心check。

**如下:

#include

#include

#include

using

namespace

std;

#define max_l 1e9

#define inf 0x3f3f3f3f

#define n 20005

int n,m,l,mid;

struct data

a,b;

void cut(data &a,int x1,int y1,int x2,int y2)

a.top=tot;

} void solve(data &a,int fc)

if(fc==1) cut(a,x1,y1,x1+mid,y1+mid);

if(fc==2) cut(a,x2-mid,y1,x2,y1+mid);

if(fc==3) cut(a,x1,y2-mid,x1+mid,y2);

if(fc==4) cut(a,x2-mid,y2-mid,x2,y2);

}bool check()

if(x2-x1<=mid&&y2-y1<=mid)return

1; }

return0;}

int main()

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

return

0;}

bzoj1052 覆蓋問題 二分答案 dfs

題意 找到乙個最小邊長,使得以此為邊長 3 個正方形可以覆蓋平面上給定的一些點。華麗爆零 首先看到最小果斷想二分答案 然後我們證明乙個東西 首先,根據鴿巢原理,3 個正方形覆蓋由所有點構成的最小矩形一定有乙個正方形是壓著至少兩條邊的 然後不外乎兩種情況 1 壓的是對邊,那麼每個都在壓對邊,有乙個正方...

bzoj1052覆蓋問題 二分 貪心

time limit 10 sec memory limit 162 mb submit 2446 solved 1131 submit status discuss 某人在山上種了n棵小樹苗。冬天來了,溫度急速下降,小樹苗脆弱得不堪一擊,於是樹主人想用一些塑料薄 膜把這些小樹遮蓋起來,經過一番長久...

BZOJ 2654 tree 二分答案

根據mst演算法的性質,每次選權值最小的邊,所以我們可以給白邊加上或減去乙個權值k 令白邊被少選或者多選,二分k即可。ps 機房裡大神突然討論起乙個好像很有道理但實際上並沒用什麼卵用的問題 如果當某乙個權值有很多條白邊和黑邊,如果加上乙個k的時候只選到了need 1條邊,而加上k 1的時候會選到ne...