題目大意:有n*n個點的田野,然後有k個點是用來放稻草人的,每個稻草人對周圍滿足曼哈頓距離的莊稼有保護作用
問最小的稻草人的個數能夠保護所有莊稼,如果不能保護則輸出-1
注意的地方:
1.放稻草人的點不需要計算,因為不是莊稼
2.可能存在0的解,也就是k=n*n時
思路:二進位制列舉所有情況,找到最小解
**如下:
#include#include#include#includeusing namespace std;const int maxs = 51;
int n,k;
bool vis[maxs][maxs];
struct point
point[11];
bool judge(point p,int t,point goal)
bool solve(point p,int t)
return true;
}int main()
int total = 1/二進位制列舉
for(int i=1;iif(solve(p,cnt))
}if(ans==20)
printf("-1\n");
else
printf("%d\n",ans);
}}
HDU 4462(狀態壓縮,列舉)
題目 hdu 4462 題目大意 n n 50 的地圖上有稻草,有m 10 個點沒有稻草可以放稻草人,問最少放幾個稻草人,能守衛所有稻草。不能守衛所有稻草輸出 1。思路 列舉所有情況,就是列舉取多少個地方放稻草人,也就是 c n,1 c n,2 c n,n 1 include include inc...
HDU 4462 暴力二進位制列舉
1.題目鏈結。題目大意 john有一塊農田,現在他需要在農田k個空閒的位置放置驅逐bird的scarecrows。已知每個scarecrows各異保護的範圍是距離它哈密頓距離不超過k的地方,現在給你這k個點的座標,求出最少需要放置多少個scarecrows才能保護好整片農田。2.由於k很小,不超過1...
hdu5762曼哈頓距離
考慮一種暴力,每次列舉兩兩點對之間的曼哈頓距離,並開乙個桶記錄每種距離是否出現過,如果某次列舉出現了以前出現的距離就輸 yesyes 否則就輸 nono 注意到曼哈頓距離只有 o m o m 種,根據鴿籠原理,上面的演算法在 o m o m 步之內一定會停止.所以是可以過得.一組資料的時間複雜度 o...