【POJ2411】Mondriaan's Dream
题意:给一个n*m的方格,用1*2和2*1的方格填满,有多少种方案。n、m<=11。
Sample Input
1 2 1 3 1 4 2 2 2 3 2 4 2 11 4 11 0 0
Sample Output
1 0 1 2 3 5 144 51205
题解:我们发现n、m很小,状压dp即可,状态转移如下
1 void dfs(int i,int j,int sta,int nex){ 2 //第i列、j+1行,当前状态sta,下列状态nex 3 if(j==n){f[i+1][nex]+=f[i][sta];return;} 4 if(((1<<j)&sta)>0) dfs(i,j+1,sta,nex); 5 //若此位置被上列占用,跳过 6 if(((1<<j)&sta)==0) dfs(i,j+1,sta,nex|(1<<j)); 7 //若此位置为空,尝试放1*2 8 if(j+1<n&&((1<<j)&sta)==0&&((1<<(j+1))&sta)==0) dfs(i,j+2,sta,nex); 9 //若次位置及下个位置都空,尝试放2*1 10 return; 11 }
初始状态为f[1][0]=1,最终答案为f[m+1][0]。
代码如下:
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 using namespace std; 5 int n,m; 6 long long f[20][2050]; 7 void dfs(int i,int j,int sta,int nex){ 8 if(j==n){f[i+1][nex]+=f[i][sta];return;} 9 if(((1<<j)&sta)>0) dfs(i,j+1,sta,nex); 10 if(((1<<j)&sta)==0) dfs(i,j+1,sta,nex|(1<<j)); 11 if(j+1<n&&((1<<j)&sta)==0&&((1<<(j+1))&sta)==0) dfs(i,j+2,sta,nex); 12 return; 13 } 14 int main() 15 { 16 while(~scanf("%d%d",&n,&m)){ 17 if(!n&&!m) break; 18 memset(f,0,sizeof(f)); 19 f[1][0]=1; 20 for(int i=1;i<=m;i++) 21 for(int j=0;j<(1<<n);j++) 22 if(f[i][j]) dfs(i,0,j,0); 23 printf("%lld\n",f[m+1][0]); 24 } 25 return 0; 26 }
转载于:https://www.cnblogs.com/Beginner-/p/8558450.html
【POJ2411】Mondriaan's Dream相关推荐
- 【状压DP+高精】【cofun1370】走道铺砖问题
[cofun1370]走道铺砖问题 Description 有一个专门为装修设计方案的设计师.在某一天,他接到了一个项目,为一栋正在修建的大楼设计走道的地板铺设方案.此项目的委托人事先便进行了说明:地 ...
- poj 2411 Mondriaan#39;s Dream 【dp】
题目:poj 2411 Mondriaan's Dream 题意:给出一个n*m的矩阵,让你用1*2的矩阵铺满,然后问你最多由多少种不同的方案. 分析:这是一个比較经典的题目.网上各种牛B写法一大堆. ...
- Hrbust 1837 Dream【dp】
Dream Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 13(8 users) Total Accepted: 3(3 users) ...
- POJ前面的题目算法思路【转】
1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...
- 【BERT】BERT模型压缩技术概览
由于BERT参数众多,模型庞大,推理速度较慢,在一些实时性要求较高.计算资源受限的场景,其应用会受到限制.因此,讨论如何在不过多的损失BERT性能的条件下,对BERT进行模型压缩,是一个非常有现实意义 ...
- 【杂谈】如何使用有三AI生态学习计算机视觉和自然语言处理等内容
有三AI正式做内容已经一年多了,有非常多的粉丝都在使用我们的平台进行学习,不过有三还没有对整个学习生态进行过一次完整的介绍,今天就来给大家详细阐述,如何使用我们平台完成计算机视觉,自然语言处理等方向的 ...
- 【杂谈】如何在专家指导下系统性学习自然语言处理
熟悉有三AI的人应该知道,有三AI在CV领域有春夏秋季划,供大家系统性学习计算机视觉.也有同学问过,咱们NLP怎么没有类似的项目呢! 今天就来了,经过一段时间的准备,这次我们推出了<系统性入门自 ...
- 【杂谈】为什么我们从来不追热点,循序渐进学习它不好吗?
文/编辑 | 言有三 最近疫情影响了我们的原创更新进度,今天我们来简单谈谈有三AI作死三原则,"不接广告","只做系统性原创","不追热点" ...
- 【NLP】如何利用BERT来做基于阅读理解的信息抽取
信息抽取 (Information Extraction: IE)是把文本里包含的信息进行结构化处理,变成计算机能够处理的结构,实体抽取.关系抽取.事件抽取等都属于信息抽取的范畴.在NLP领域,信息抽 ...
最新文章
- 构造函数调用虚函数先从子类搜索同名函数
- Myeclipse中快速插入HttpServlet子类中doGet和doPost方法
- new Random().Next(1, 100); 多线程同时执行结果很高概率相同,
- a5松下驱动器参数设置表_松下伺服几个参数需要熟悉并掌握设置方法
- territory pop up window是否显示的逻辑,和transaction type差不多
- 课题开题报告范文样本_成都汽车职业技术学校举行 2020年省、市、区课题开题报告会...
- postgreSQL源码分析——索引的建立与使用——各种索引类型的管理和操作(1)
- php让符合条件的复选框选中,多条件查询(复选框条件)
- python识别数字程序_Python识别处理照片中的条形码
- C/C++教程 第十二章 —— MFC的基本使用
- java 歌词解析代码_网易云歌词爬取(java)
- iOS开发实例 | Demo:数独小游戏
- 建站百科|企业网站logo设计指南
- 没有apihost什么意思_热文:2021年没有立春什么意思
- Linux Kernel Patched
- 在苹果Macbook Pro上安装Windows 7
- 芯片CP/FT测试的基本概念理解
- 需求分析+辽阳市水库大坝安全检测平台+志豪未来科技有限公司+陈志豪
- [国家地理百年纪念典藏全100集][MKV][225M/1][国英双语中字]
- java用tkmapper分组查询_tk.mybatis 中的通用Mapper自定义SQL语句