poj3254Corn Fields 狀態壓縮dp

2021-08-23 14:19:47 字數 646 閱讀 4387

理解都在**注釋裡

題目直通車

#include//狀態壓縮

#includeconst int maxn_count=377+10;///count的值是377

const int mod=1e8;

int n,m;

int count;

int dp[15][maxn_count];///dp;最終答案存在σdp[n][i],i從0到count

int vis[12+5];

int sett[377+10];///一行所有可能排列的集合;

int judge2(int i)

void init()

}for(int i=1; i<=count; i++)///將第一行初始化,篩掉如sett[i]=010,而vis[1]=x1x的(vis[1]=x1x代表第二個空不可以種玉公尺);

if(judge(sett[i],1))

dp[1][i]=1;

for(int i=2;i<=n;i++)///從第二行開始算}}

int sum=0;

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

sum=(sum+dp[n][i])%mod;

cout<}

poj解題報告 3254

狀態壓縮dp。題意 給出乙個n行m列的草地,1表示肥沃,0表示貧瘠,現在要把一些牛放在肥沃的草地上,但是要求所有牛不能相鄰,問有多少種放法。分析 假如知道第 i 1 行的所有的可以放的情況,那麼對於第 i 行的可以放的一種情況,只要判斷它和 i 1 行的所有情況的能不能滿足題目的所有牛不相鄰,如果有...

POJ 3254,POJ 1185(狀態壓縮DP)

poj 3254 corn fields 我們可以用二進位制列舉第一行狀態,用1代表在這種植,0代表不種植,第一行確定了,第二行就可以根據第一行不斷累加。dp row state 代表第row行用state狀態時的方法數。如果這個state合法,則dp row state dp row 1 stat...

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...