poj3254 Corn Fields
来源:互联网 发布:开淘宝网店注册收费 编辑:程序博客网 时间:2024/06/03 00:15
poj3254
分析
这道题算是状态压缩dp的入门题吧,知道状态压缩是个什么套路。
题目
http://poj.org/problem?id=3254
代码
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int mod=100000000;int n,m,top=0;int state[600],num[110];int dp[20][600];int cur[20];bool ok(int x){ if(x&x<<1) return 0; return 1;}void init(){ top=0; int total=1<<n; for(int i=0;i<total;i++) { if(ok(i)) state[++top]=i; }}bool fit(int x,int k){ if(x&cur[k]) return 0; return 1;}int main(){ while(scanf("%d %d",&m,&n)!=EOF) { init(); memset(dp,0,sizeof(dp)); for(int i=1;i<=m;i++) { cur[i]=0; int num; for(int j=1;j<=n;j++) { scanf("%d",&num); if(num==0) cur[i]+=(1<<(n-j)); } } for(int i=1;i<=top;i++) { if(fit(state[i],1)) dp[1][i]=1; } for(int i=2;i<=m;i++) { for(int k=1;k<=top;k++) { if(!fit(state[k],i)) continue; for(int j=1;j<=top;j++) { if(!fit(state[j],i-1)) continue; if(state[k]&state[j]) continue; dp[i][k]=(dp[i][k]+dp[i-1][j])%mod; } } } int ans=0; for(int i=1;i<=top;i++) ans=(ans+dp[m][i])%mod; printf("%d\n",ans); } return 0;}
0 0
- 【DP】 poj3254 Corn Fields
- DP poj3254 Corn Fields
- poj3254 Corn Fields
- POJ3254--Corn Fields
- poj3254 Corn Fields
- POJ3254--Corn Fields
- 【状压】Corn Fields POJ3254
- POJ3254 Corn Fields
- [POJ3254] Corn Fields
- 【POJ3254】Corn Fields
- POJ3254 Corn Fields
- poj3254 Corn Fields
- POJ3254--Corn Fields
- poj3254 Corn Fields
- poj3254 Corn Fields
- POJ3254 Corn Fields
- POJ3254 Corn Fields
- POJ3254:Corn Fields
- TintedStatusBar实践总结
- zoj 1221 Risk【最短路 3种方法】
- nyoj458小光棍数
- matlab BP神经网络 机器学习 函数逼近
- HDU 2151 Worm (动态规划)
- poj3254 Corn Fields
- POJ 1922:Ride to School 【水】
- 关于SAE没有file_put_contents写权限的问题
- JavaWeb将数据包装成JSON以及JSP通过ajax对JSON的获取与解析(代码实例)
- 关于Eclipse使用天天模拟器调试Android程序
- 跟Tennant一起学编程--Python环境配置及各种HelloWorld的姿势
- 算法导论例程——快速排序
- Java字节流
- poj2724 Purifying Machine