POJ 3254 Corn Fields (状压DP入门)
2016-03-15 16:09
399 查看
http://poj.org/problem?id=3254
状压DP:
状压DP:
#include<iostream> #include<cstring> using namespace std; int dp[13][1<<13]; int mp[13],s[1<<13]; int n,m; int check1(int x) { return x&(x<<1); } int check2(int x,int p) { return mp[x]&p; } int main() { cin>>n>>m; memset(dp,0,sizeof(dp)); memset(mp,0,sizeof(mp)); memset(s,0,sizeof(s)); for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) { int x; cin>>x; if (x==0) mp[i]+=1<<(j-1); } } int cut=0; for (int i=0;i<(1<<m);i++) { if (!check1(i)) s[cut++]=i; } for (int i=1;i<=n;i++) { for (int j=0;j<cut;j++) { if (check2(i,s[j])) continue; if (i==1) { dp[1][j]=1; continue; } for (int k=0;k<cut;k++) { if (s[j]&s[k]) continue; dp[i][j]+=dp[i-1][k]; } } } int ans=0; for (int i=0;i<cut;i++) { ans=(ans+dp [i])%100000000; } cout<<ans<<endl; }
相关文章推荐
- 关于虚拟地址,线性地址,逻辑地址还有物理地址的区分
- Android中MVP框架的使用
- 10个顶级的CSS UI开源框架
- Cpp--拷贝构造函数与赋值运算符重载函数的区别与使用
- LCD操读问题的解决
- 在MFC框架下使用osg报内存泄露的解决办法
- PullToRefresh 下拉刷新菜单
- 了解linux操作系统引导过程详解
- 关于在安卓下添加系统应用
- 自学手机网站开发
- Linux命令之文件系统(三)
- ubuntu 14 编译视频第三方库ijkplayer,可以在winows下使用
- 初识数据库
- AT&T内联汇编示例
- final、finally和finalize的区别
- while循环
- 有效沟通技巧慕课答案
- 反编译APK获取代码&资源
- CSS属性游标手指:cursor中pointer和hand的区别
- HD1269迷宫城堡(有向图 && 划分连通块)