当前位置: 首页 > news >正文

[POJ2411]Mondriaan's Dream

题目大意:
  给你一个n*m的格子,让你用1*2的长方形不重叠地铺满,问总共有几种铺法。

思路:
  轮廓线DP。
  枚举当前右下角(i,j),那么有不放、往上放和往左放三种情况。
  对于三种情况分别讨论和转移。
  状压的状态不是当前行的状态,而是当前轮廓线的状态。

 1 #include<cstdio>
 2 #include<cctype>
 3 #include<cstring>
 4 typedef long long int64;
 5 inline int getint() {
 6     register char ch;
 7     while(!isdigit(ch=getchar()));
 8     register int x=ch^'0';
 9     while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
10     return x; 
11 }
12 const int M=12;
13 int64 f[2][1<<M];
14 bool cur;
15 int n,m;
16 inline void update(const int &a,const int &b) {
17     if(b&(1<<m)) f[cur][b^(1<<m)]+=f[cur^1][a];
18 }
19 int main() {
20     for(;;) {
21         n=getint(),m=getint();
22         if(!n&&!m) return 0;
23         memset(f[0],0,sizeof f[0]);
24         cur=0;
25         f[0][(1<<m)-1]=1;
26         for(register int i=0;i<n;i++) {
27             for(register int j=0;j<m;j++) {
28                 cur^=1;
29                 memset(f[cur],0,sizeof f[cur]);
30                 for(register int k=0;k<(1<<m);k++) {
31                     update(k,k<<1);
32                     if(i&&!(k&(1<<(m-1)))) update(k,(k<<1)^(1<<m)^1);
33                     if(j&&!(k&1)) update(k,(k<<1)^3);
34                 }
35             }
36         }
37         printf("%lld\n",f[cur][(1<<m)-1]);
38     }
39 }

 

转载于:https://www.cnblogs.com/skylee03/p/8110892.html

相关文章:

  • CentOS7防火墙
  • vue.js 初步学习资源
  • Atlassian发布JIRA项目组合管理解决方案
  • 图片后门恶意捆绑工具FackImageexploer
  • php扩展模块安装
  • Android Studio 3.0 Android 分析器 | 中文教学视频
  • GeoIP2 数据库更新地址
  • 个人常用iOS第三方库以及XCode插件介绍
  • 杭州数澜联合创始人 \u0026 CTO 江敏:大数据思维和大数据冶炼 —— 拒绝坐着金山吃馒头...
  • 重磅干货不容错过!2017云栖大会汇总资料,速来领取!
  • Linux—CentOS7,玩转samba服务,基于身份验证的共享
  • initial ram filesystem
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • 在Docker中运行tensorflow版的neural style
  • Zookeeper开源客户端框架Curator简介
  • Angular Elements 及其运作原理
  • CSS居中完全指南——构建CSS居中决策树
  •  D - 粉碎叛乱F - 其他起义
  • eclipse的离线汉化
  • java8-模拟hadoop
  • JavaScript类型识别
  • js继承的实现方法
  • Mybatis初体验
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Terraform入门 - 3. 变更基础设施
  • VuePress 静态网站生成
  • webpack4 一点通
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 解决iview多表头动态更改列元素发生的错误
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 数组大概知多少
  • 以太坊客户端Geth命令参数详解
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​香农与信息论三大定律
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • ${ }的特别功能
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二)WCF的Binding模型
  • (二)斐波那契Fabonacci函数
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (转)德国人的记事本
  • (转)四层和七层负载均衡的区别
  • ***通过什么方式***网吧
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET/C# 的字符串暂存池
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET业务框架的构建