OpenJudge1413 Mondriaan's Dream
2015-10-31 16:52
148 查看
题目:http://noi.openjudge.cn/ch0405/1413/
分析:DP.二进制按位压缩,此位向下伸出为1,不伸出为0,f[i][j]表示i行状态为j时的方案数,则f[0][0]=1;答案即为f
[0].
代码:
分析:DP.二进制按位压缩,此位向下伸出为1,不伸出为0,f[i][j]表示i行状态为j时的方案数,则f[0][0]=1;答案即为f
[0].
代码:
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int Tmax=15,Tmax2=2055; int n,m,top; long long int f[Tmax][Tmax2]; bool check(int s,int x) { int i,now=-1; for(i=0;i<m;i++) { if((s&(1<<i))&&(x&(1<<i))) return false; if((s&(1<<i))||(x&(1<<i))){ if((i-now-1)%2!=0) return false; now=i; } } if((m-now-1)%2!=0) return false; return true; } void work() { int i,j,k; for(i=1;i<=n;i++) { for(j=0;j<=top;j++) { if(f[i-1][j]==0) continue; for(k=0;k<=top;k++) if(check(j,k)) f[i][k]+=f[i-1][j]; } } printf("%lld\n",f [0]); return; } int main() { int i,j; while(scanf("%d%d",&n,&m)==2&&n!=0) { if((n*m)%2!=0){ printf("0\n"); continue; } memset(f,0,sizeof(f)); f[0][0]=1; top=(1<<m)-1; work(); } return 0; }
相关文章推荐
- Tomcat7 设置最大连接数
- linux安装
- Tomcat环境配置
- Java开发牛人十大必备网站
- 使用statsd+graphite+grafana构建业务及性能监控模块
- [在github上搭建网站]使用Git搭建我的静态网站-搭建基本环境
- Nginx+Lua学习笔记-环境搭建
- Android项目自动编译脚本记录
- nginx篇二
- nginx篇一
- Nginx负载均衡和LVS负载均衡的比较分析
- Nginx负载均衡配置实例详解
- Linux Signal 信号查询
- centos7.0 64位系统 安装PHP 支持 nginx
- 使用Div+CSS布局设计网站的优点
- 学习OpenCV第一课——认识、安装配置OpenCV(CodeBlocks)
- Linux下进程信息的深入分析
- 三层架构之登录
- Winform 三层架构小例子
- Linux进程的五个段(数据段、代码段、bss、堆栈段)