題目:hdu-4462
題目大意:
n*n(<=50)的地圖上有稻草,有m(<=10)個點沒有稻草可以放稻草人,問最少放幾個稻草人,能守衛所有稻草。不能守衛所有稻草輸出-1。
思路:列舉所有情況,就是列舉取多少個地方放稻草人,也就是:c(n,1)+c(n,2)+……c(n,n)=1<
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int inf=0x3f3f3f3f;
int vis[55][55];
int h[55];
struct node
p[55];
int ok(int x,int y,node c)
int main()
for(int i=0;icin>>p[i].r;
int ans=inf;
int s=(1
<1;//列舉的總數
//cout<<"s="//cout<<"cnt="for(int k=0;kif(ok(ii,jj,p[h[k]]))//判斷(ii,jj)這個地方是否被所有放稻草人的地方的守衛的範圍內}}
}//cout<<"num="ans=min(ans,cnt);//更新ans的最小值
}if(ans==inf)
cout
<<-1
cout
0;}
hdu4462 曼哈頓距離
題目大意 有n n個點的田野,然後有k個點是用來放稻草人的,每個稻草人對周圍滿足曼哈頓距離的莊稼有保護作用 問最小的稻草人的個數能夠保護所有莊稼,如果不能保護則輸出 1 注意的地方 1.放稻草人的點不需要計算,因為不是莊稼 2.可能存在0的解,也就是k n n時 思路 二進位制列舉所有情況,找到最小...
HDU 4462 暴力二進位制列舉
1.題目鏈結。題目大意 john有一塊農田,現在他需要在農田k個空閒的位置放置驅逐bird的scarecrows。已知每個scarecrows各異保護的範圍是距離它哈密頓距離不超過k的地方,現在給你這k個點的座標,求出最少需要放置多少個scarecrows才能保護好整片農田。2.由於k很小,不超過1...
hdu1074狀態壓縮
很明顯的狀態壓縮題目。當然了如果他的意識只有是求最小值沒有要求輸出那個輸出的順序,那麼直接用揹包,甚至是貪心都是可以做出來的,但是要求順序這個揹包的話沒有辦法吧資料記錄下來。所以用二進位制壓縮。所謂的二進位制壓縮就是用二進位制來表示事情的完成程度和狀況,比如1,就是0000001表示第乙個作業做了,...