poj3254 基礎狀壓dp

2022-05-23 18:42:08 字數 624 閱讀 1306

第二個狀壓dp

做過的第乙個也是放牛問題,兩頭牛不能相鄰

這個題多了乙個限制,就是有些位置不能放牛

於是先與處理一下每一行所有不能放牛的狀態,處理的過程直接對每乙個不能放牛的狀態或以下

ac**:

#include #include 

#include

#include

#include

#include

using

namespace

std;

#define mod 100000000

int dp[15][4100

];int cant[15

];int

n,m;

void

ini()}}

}void

solve()

else

}for(int i=1;i)}}

int ans=0

;

for(int i=0;i<1

<)

printf(

"%d\n

",ans);

}int

main()

return0;

}

題解 poj3254 狀壓DP

題目鏈結 思路摘抄自大佬部落格 狀態可由二進位制表示,只需將每種狀態轉化為相應的十進位制數,即可只用乙個數字,就能表示某一種狀態 以dp i state j 來表示對於前i行,第i行採用第j種狀態時可以得到的可行方案總數!例如 回頭看樣例資料,dp 2 1 即代表第二行使用第2中狀態 0 1 0 時...

POJ 3254 (狀態壓縮DP)

思路 狀態壓縮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 incl...

poj3254 狀態壓縮DP

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