【BZOJ】1725: [Usaco2006 Nov]Corn Fields牧场的安排
2024-08-26 01:42:23
【算法】状压DP
【题解】对于上一行的每个状态,每行进行DFS。
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
const int maxn=,maxN=,MOD=;
ll f[][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[-x][pre])%MOD;
}
else{
if(!((<<(p-))&now)&&!((<<p)&pre)&&map[h][p+])dfs(p+,now|(<<p),pre);
dfs(p+,now,pre);
}
}
int main(){
scanf("%d%d",&n,&m);
int u;
for(int i=;i<=n;i++)for(int j=;j<=m;j++){
scanf("%d",&u);
map[i][j]=u;
}
x=;
memset(f[x],,sizeof(f[x]));
f[x][]=;
for(int i=;i<=n;i++){
x=-x;h=i;
memset(f[x],,sizeof(f[x]));
for(int j=;j<(<<m);j++)if(f[-x][j]){
dfs(,,j);
}
}
long long ans=;
for(int j=;j<(<<m);j++)ans=(ans+f[x][j])%MOD;
printf("%lld",ans);
return ;
}
最新文章
- H5页面微信分享和手Q分享设置
- 程序猿每个VPN真卡手
- [OC Foundation框架 - 16] NSObject和反射
- xcode6 自定义UITabbarController
- MyEclipse使用经验总结
- SQL*Net message from client
- 一步一步写算法(之prim算法 上)
- U3D脚本开发基础
- sqlserver 查询所有表及记录行数
- Linux下创建root权限的账号osadmin
- C# String StringBuilder 区别
- 一个基于H5audio标签的vue音乐播放器
- 回收 PV - 每天5分钟玩转 Docker 容器技术(152)
- vuepress 学习心得
- bzoj2560串珠子(子集dp)
- js之搜索框
- Shell脚本中的并发(转)
- package.json 中 npm 依赖包版本前的符号的意义
- js创建表单并提交
- iOS边练边学--UITableViewCell的常见属性设置