种植方案(状压dp)
Posted SSL_LKJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了种植方案(状压dp)相关的知识,希望对你有一定的参考价值。
种植方案
输入样例
2 3
1 1 1
0 1 0
输出样例
9
解题思路
状压dp模板
主要就是枚举两行之间的关系
预处理一些东西
转移就很好转移了
记住最后要求和
AC代码
#include<cstdio>
using namespace std;
int n,m,tot,ans,b[1<<15],c[1<<15],a[15][15],f[15][1<<15];
int main()
scanf("%d%d",&n,&m);
for(int i=0;i<(1<<m);i++)//预处理
if(((i<<1)&i)==0)b[++tot]=i;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
c[i]=(c[i]<<1)+a[i][j];//初值
f[0][0]=1;//初值
for(int i=1;i<=n;i++)//转移方程
for(int j=1;j<=tot;j++)
if((c[i]&b[j])==b[j])
for(int k=1;k<=tot;k++)
if(!(b[j]&b[k]))
f[i][b[j]]=(f[i][b[j]]+f[i-1][b[k]])%100000000;
for(int i=1;i<=tot;i++)ans=(ans+f[n][b[i]])%100000000;//求和
printf("%d",ans);
return 0;
谢谢
以上是关于种植方案(状压dp)的主要内容,如果未能解决你的问题,请参考以下文章
ybtoj 状压DP课堂过关 例题1jzoj 1266 luogu P1879 [USACO06NOV]Corn Fields G & 玉米田 & 种植方案
HDU4057 Rescue the Rabbit(AC自动机+状压DP)