BZOJ1725: [Usaco2006 Nov]Corn Fields牧场的安排
Posted ONION_CYC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ1725: [Usaco2006 Nov]Corn Fields牧场的安排相关的知识,希望对你有一定的参考价值。
【算法】状压DP
【题解】对于上一行的每个状态,每行进行DFS。
#include<cstdio> #include<algorithm> #include<cstring> #define ll long long using namespace std; const int maxn=20,maxN=10000,MOD=100000000; ll f[2][maxN]; int n,m,x,h; bool map[maxn][maxn]; void dfs(int p,int now,int pre){ if(p==m){ f[x][now]=(f[x][now]+f[1-x][pre])%MOD; } else{ if(!((1<<(p-1))&now)&&!((1<<p)&pre)&&map[h][p+1])dfs(p+1,now|(1<<p),pre); dfs(p+1,now,pre); } } int main(){ scanf("%d%d",&n,&m); int u; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){ scanf("%d",&u); map[i][j]=u; } x=0; memset(f[x],0,sizeof(f[x])); f[x][0]=1; for(int i=1;i<=n;i++){ x=1-x;h=i; memset(f[x],0,sizeof(f[x])); for(int j=0;j<(1<<m);j++)if(f[1-x][j]){ dfs(0,0,j); } } long long ans=0; for(int j=0;j<(1<<m);j++)ans=(ans+f[x][j])%MOD; printf("%lld",ans); return 0; }
以上是关于BZOJ1725: [Usaco2006 Nov]Corn Fields牧场的安排的主要内容,如果未能解决你的问题,请参考以下文章
bzoj1725[Usaco2006 Nov]Corn Fields牧场的安排*
BZOJ1725[Usaco2006 Nov]Corn Fields牧场的安排 状压DP
BZOJ1725: [Usaco2006 Nov]Corn Fields牧场的安排
bzoj1725[USACO2006 Nov]Corn Fields牧场的安排