poj 3254 Corn Fields 简单状压dp
来源:互联网 发布:sql 新增列 默认值 编辑:程序博客网 时间:2024/05/23 19:19
点击打开链接
#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int M = 380;const int Mod=100000000;long long dp[20][M]; // dp[i][j] 前i行的方法数 && 第i行的排放为J int n,m,snum; int map[M];//题目所给的图转化成数字 作用:不该放的放不了 图:1010 决策 1011 显然第三个位置不能放 淘汰该决策 int state[M];void Init(){snum=0; // 单行的合法个数 for(int i=0;i<4096;i++) //2^12{if(!(i&i<<1)){state[snum++]=i;}} }int main(){Init();cin>>n>>m;for(int i=1;i<=n;i++){map[i]=0;for(int j=1;j<=m;j++){int x;cin>>x;if(x==1){map[i]+=(1<<(m-j+1)); //第i行的地图 }}}memset(dp,0,sizeof(dp));for(int j=0;j<snum;j++) //第一行 {if(state[j]&(~map[1]))continue;dp[1][j]++;}for(int i=2;i<=n;i++){for(int j=0;j<snum;j++){for(int k=0;k<snum;k++){if(state[j]&(~map[i])) //infertile不能放 continue;if(!(state[j]&state[k])) //当前行和上一行不能矛盾 dp[i][j]=(dp[i][j]+dp[i-1][k])%Mod; //当前行只与上一行有关 }}}long long ans=0;for(int j=0;j<snum;j++){ans=(ans+dp[n][j])%Mod;}cout<<ans<<endl;return 0;}
0 0
- poj 3254 Corn Fields 简单状压dp
- POJ 3254 Corn Fields 矬到荼蘼的状压DP
- POJ 3254 Corn Fields //入门状压dp
- poj 3254 Corn Fields(他们说是状压dp??)
- POJ 3254 Corn Fields(简单的状态压缩dp)
- poj 3254 Corn Fields(DP-状态DP)
- poj 3254 Corn Fields //状态压缩DP
- POJ 3254 Corn Fields 状态压缩DP
- POJ --3254--Corn Fields--状态DP
- poj 3254 Corn Fields(状态压缩dp)
- POJ 3254 Corn Fields(状压dp)
- [poj 3254]Corn Fields[状压DP]
- POJ 3254 Corn Fields (状态压缩DP)
- poj-3254-Corn Fields-状态压缩DP
- poj 3254 Corn Fields 状压dp
- poj 3254 Corn Fields (状态压缩DP)
- POJ 3254 Corn Fields (状态压缩DP)
- POJ 3254 Corn Fields(状态压缩dp)
- netty源码浅析--服务器bind
- Java中的回调
- html5学习
- 【训练题】航线设计(优化求较大数据规模的最长单调子序列)
- C++ primer plus第六版课后编程练习答案:7.3
- poj 3254 Corn Fields 简单状压dp
- 历史上的重大软件BUG启示录 第3篇---价值5亿美元的简单复用
- 非变易算法
- EL和jstl
- 组合查询
- C++ primer plus第六版课后编程练习答案:7.4
- SharedPreferences轻量级存储
- MVC
- 一步一步走进APIcloud