POJ 3254 (狀態壓縮DP)

2021-06-21 22:14:29 字數 670 閱讀 2455

思路:狀態壓縮dp,用二進位制位的1表示放了,0表示沒有放。設dp[i][j],表示第i行狀態為j時,前i行的方案數,狀態轉移方程就是 dp[i][j] += dp[i-1][k],j與k這兩個狀態不衝突。最後答案就是dp[n][1...top] 之和。

#include#include#include#include#includeusing namespace std;

const int maxn = 15;

const int mod = 100000000;

int dp[maxn][400];

int top, tmp, n, m;

int map[maxn], status[400];

void init()

}int main()

}for(int i = 1;i < top;i ++)

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

int ans = 0;

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

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

}return 0;

}

poj3254 狀態壓縮DP

全程精講 農夫有一塊地,被劃分為m行n列大小相等的格仔,其中一些格仔是可以放牧的 用1標記 農夫可以在這些格仔裡放牛,其他格仔則不能放牛 用0標記 並且要求不可以使相鄰格仔都有牛。求方案數 include include using namespace std define mod 10000000...

poj3254 狀態壓縮dp

題意 乙個n m的矩陣,每個格仔是0或者1,1表示土壤肥沃可以種植草地,0則不可以。在種草地的格仔可以放牛,但邊相鄰的兩個格仔不允許同時放牛,問總共有多少種放牛的方案 不放牛也算一種情況 思路 狀態壓縮 感覺不大像dp。dp i j 表示第i行狀態為j時符合條件的方案數 我們可以先求出一行的所有可行...

POJ3254(狀態壓縮DP)

與poj1185類似,不過這裡每一行的狀態只收前一行影響,所以用 f i t 表示第 i 行狀態為 stk t 時的總方案數,那麼根據加法原理,f i t f i t f i 1 j j 表示第 i 1 行所有合法的切與狀態 stk t 不相鄰的狀態,記得取模。還有就是對每一行的狀態判斷是否合適,就...