hdu2167 方格取數 狀態壓縮dp

2021-06-26 02:40:09 字數 671 閱讀 6645

題意:

方格取數,八個方向的限制。

思路:八個方向的不能用最大流了,四個的可以,八個的不能抽象成二分圖,所以目測只能用dp來跑,dp[i][j]表示的是第i行j狀態的最優,具體看**。

#include

#include

int dp[16][1<<15];

int map[16][16];

int zt[1<<15];

int maxx(int x ,int y)

int dp(int n)

}int ans = 0;

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

ans = maxx(ans ,dp[n][i]);

return ans;}

int main ()

n = nowid;

for(i = 2 ;i <= n ;i ++)

for(j = 1 ;j <= n ;j ++)

scanf("%d" ,&map[i][j]);

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

}return 0;

}

hdu2167之狀態壓縮

題目大意 給你乙個矩陣,讓你在矩陣中找一些元素使它們加起來和最大,但是當你使用某乙個元素時,那麼這個元素周圍的其它八個元素都不能取!需要記錄上一行的狀態數量,每一種的狀態,和從第一行到上一行每個狀態的總的元素和。當前行的話通過dfs,求出當前行狀態的個數以及每個狀態下當前行的值。之和比較上一行和當前...

HDU2167 狀態壓縮DP

狀態壓縮dp 詳見 1 2 狀態壓縮dp 3dp i j 第i行j狀態的最大和 4dp i j max dp i 1 k sum i j 5題意 給定乙個n n的方格,讓你在裡面取出一些數使其和最大,要求每乙個數不能與其相鄰的8個數同時取出6 7 include8 include 9 include...

HDU 2167 狀態壓縮dp

第一道狀態壓縮dp,其實就是爆搜,只不過把排除了大量不可能的情況,先用sta儲存每行可能的情況,sum i j 儲存i行j種情況的該行和,然後依次更新dp。include include include using namespace std int n,sum 20 1 15 dp 20 1 15...