bzoj1052 HAOI2007 覆蓋問題

2021-07-07 05:08:19 字數 932 閱讀 1538

一道簡單的二分+貪心,先找四個最大最小座標,以四個角中的乙個為左上角劃正方形,再找再劃,最後判斷剩下的點是否在乙個正方形內。

ac code:

#include#include#include#include#define ll long long 

using namespace std;

const ll a[2][4]=,};

const ll inf=21474836470ll;

ll sx[4],sy[4],ssx[4],ssy[4],x[20010],y[20010],up,dn,le,ri,n,maxlen,minlen;

bool boo[20010];

void cover(ll xx,ll yy,ll len)

bool in_square(ll len)

if ((d-u+1>len)||(r-l+1>len)) return 0;

return 1;

}void getss()

ssx[0]=u;ssx[1]=u;ssx[2]=d;ssx[3]=d;

ssy[0]=l;ssy[1]=r;ssy[2]=l;ssy[3]=r;

return ;

}bool ok(ll len)

} return 0;

}int main()

sx[0]=up;sx[1]=up;sx[2]=dn;sx[3]=dn;

sy[0]=le;sy[1]=ri;sy[2]=le;sy[3]=ri;

maxlen=max(dn-up+1,ri-le+1);

minlen=min(dn-up+1,ri-le+1);

ll l=1ll,r=maxlen;

while (l!=r)

printf("%lld\n",l-1);

}

BZOJ1052 HAOI2007 覆蓋問題

bzoj 洛谷二分答案是顯然的。算一下包含所有的點的最小矩形的範圍 x1,y1 x2,y2 貪心思考一下肯定是把塑料薄膜其中乙個角放在此矩形上的 然後 dfs 判一下即可 include include include include include include using namespace ...

1052 HAOI2007 覆蓋問題(貪心)

某人在山上種了n棵小樹苗。冬天來了,溫度急速下降,小樹苗脆弱得不堪一擊,於是樹主人想用一些塑料薄膜把這些小樹遮蓋起來,經過一番長久的思考,他決定用3個l l的正方形塑料薄膜將小樹遮起來。我們不妨將山建立乙個平面直角座標系,設第i棵小樹的座標為 xi,yi 3個l l的正方形的邊要求平行與座標軸,乙個...

BZOJ1052 BZOJ3760 覆蓋問題

原題位址 先說自己的逗比方法 二分答案,把所有點用乙個最小的矩形 框 起來,易證矩形的其中乙個端點是最優解中正方形的乙個端點,然後列舉四個端點後遞迴處理,差不多了 然後 olz黃學長的o n 做法 ac code include include include using namespace std...