HDU 1143 Tri Tiling (递推)
Tri Tiling
Total Submission(s): 2118 Accepted Submission(s): 1211

2
8
12
-1
3
153
2131
转:::,假设n为奇数,必定无解。
当n为偶数时,一个比較直观的思路就是把大矩形用竖线切出左边一部分,然后递归求解,就像UVA_10359那样,直接考虑最左边一个小矩形是怎样构成的我们就能够递归得到f(n)递推式。
尽管这个题目乍看上去小矩形似乎拼法比較多,并且要拼出一个不能再用竖线切分的小矩形似乎拼的方法也并不直观。但假设我们在纸上多画一画的话,对于拼随意一个横向边长为x的不可再用竖线切分的小矩形,假设x为2,显然有3种拼法,假设x为大于2的偶数,那么仅仅有2种拼法。
至于假设x>2为什么仅仅有两种拼法,我们最好还是实际拼一下。首先第一列肯定仅仅有两种情况,第一种是一个横的在上面,然后一个竖的在左下方,另外一种是一个横的在以下,然后一个竖的在左上方,由于两种情况对称,我们仅仅讨论第一种情况。
如今已经拼好两个了,假设横的以下再放一个竖的,那么显然这个就成了一个x=2的小矩形了,那么最后拼出来的就不符合我们前面说的不可再用竖线切分的特征了,因此横的以下也即竖的右边,仅仅能再放两个横的,放完两个横的我们就发现两个横的上面有一个小正方形区域,这个区域仅仅能楔进去一个横的,等把这个横的画完之后,MyGod,我们会发现一个惊人的事实,如今的这个结构是和我们最初放完一个横的一个竖的的那种情况的结构是一样的!因此,假设我们想继续向右拼出不能被竖线切分的矩形,那么仅仅能是反复之前的操作,因而得到的最后横向边长为x的矩形是唯一确定的。
前面我们最初拼的时候仅仅取了对称的两种情况之中的一个,因此,假设x>2,拼出一个不能被竖线分割的矩形的方法仅仅有两种。
那么递推公式自然就有了,f(n)=3*f(n-2)+2*f(n-4)+…+2*f(0),然后再写出f(n-2)的递推式后两式作差就能够得到f(n)=4*f(n-2)-f(n-4),递归的边界是f(0)=1,f(2)=4。
代码:0MS
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
using namespace std;
#define M 31
int f[M]={1,3};
int main()
{
int i,n;
for(i=2;i<M;i++) f[i]=4*f[i-1]-f[i-2];
while(cin>>n)
{
if(n<0) break;
if(n%2==0) cout<<f[n/2]<<endl;
else cout<<0<<endl;
}
return 0;
}
HDU 1143 Tri Tiling (递推)的更多相关文章
- HDU 1143 Tri Tiling
链接:http://acm.hdu.edu.cn/showproblem.php? pid=1143 Tri Tiling Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1143 Tri Tiling(递归)
意甲冠军:一些现有的1*2小盒子.求拼3*n多少个长方形的拼写. 思考: 因为它是一个递归式.肯定会遇到层的关系.仔细观察,研究发现,每层应设置2一层.(奇数层不能是矩形)而从显卡好最后一层的最后一战 ...
- HDU 1143 Tri Tiling 递归问题
将一个3*n的矩形用1*2的矩形填充,n为奇数时一定不能被填满,n*3%2==1 接下来处理这个问题我们要从简单的情况开始考虑,所谓递归就是要能将问题的规模不断减小,通过小问题的解决最后将复杂问题解决 ...
- HDU 2085 核反应堆 --- 简单递推
HDU 2085 核反应堆 /* HDU 2085 核反应堆 --- 简单递推 */ #include <cstdio> ; long long a[N], b[N]; //a表示高能质点 ...
- HDU 5860 Death Sequence(递推)
HDU 5860 Death Sequence(递推) 题目链接http://acm.split.hdu.edu.cn/showproblem.php?pid=5860 Description You ...
- hdu 2604 Queuing(dp递推)
昨晚搞的第二道矩阵快速幂,一开始我还想直接套个矩阵上去(原谅哥模板题做多了),后来看清楚题意后觉得有点像之前做的数位dp的水题,于是就用数位dp的方法去分析,推了好一会总算推出它的递推关系式了(还是菜 ...
- PKU 2506 Tiling(递推+高精度||string应用)
题目大意:原题链接有2×1和2×2两种规格的地板,现要拼2×n的形状,共有多少种情况,首先要做这道题目要先对递推有一定的了解.解题思路:1.假设我们已经铺好了2×(n-1)的情形,则要铺到2×n则只能 ...
- HDU 2154 跳舞毯 | DP | 递推 | 规律
Description 由于长期缺乏运动,小黑发现自己的身材臃肿了许多,于是他想健身,更准确地说是减肥. 小黑买来一块圆形的毯子,把它们分成三等分,分别标上A,B,C,称之为“跳舞毯”,他的运动方式是 ...
- HDU - 3336 next运用+递推
题目的匹配应该也要看成一个文本串与另一个模式串的匹配过程 Text是以当前i结尾的后缀来匹配Pattern的前缀(非真) 这里的Pattern肯定是可以匹配成功的,直接由next来保证(next总是当 ...
随机推荐
- 修改IIS7并发连接数目限制
转自原文 修改IIS7并发连接数目限制 1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为65535. IIS Manager > ApplicationPools > Ad ...
- ORACLE RMAN备份--差异增量与累积增量的策略实例图
转自原文 ORACLE RMAN备份--差异增量与累积增量的策略实例图
- python打印即时输出的方法
>>> import sys>>> sys.stdout.flush() 但是实验了,上面的报错,应该是不对的. 实验了,下面的报错,应该是不对的. 使用 prin ...
- Java反射学习总结终(使用反射和注解模拟JUnit单元测试框架)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 本文是Java反射学习总结系列的最后一篇了,这里贴出之前文章的链接,有兴趣的可以打开看看. ...
- python3 序列
python中有很多内置序列 列表 元组 字符串 python中容器的概念 列表 元组 字符串 字典 集合 是可以改变的,元组不可改变 几乎可以在所有情况下用列表代替元组,只有一种情况下,是不可以的, ...
- Bootstrap相关优质项目必备网址
1:文档全集:这里收集了Bootstrap从V1.0.0版本到现在,整个文档的历史.Bootstrap本身就是一个传奇,而这些文档就是传奇的见证! 官方网址:http://docs.bootcss.c ...
- linux下实现监控进程网络带宽
嗯,近期都在网易游戏实习,所以貌似有段时间没有上来写点东西了... 来网易游戏实习最基本的目的事实上就是想知道在游戏公司里面工作都是些什么内容,毕竟自己曾经也没有接触过游戏公司.. 还比較的好奇.. ...
- 2. pushd . :将当前文件夹压入栈,使用popd能够回到该文件夹。
1.man -t ls | ps2pdf -> ls.pdf生成pdf格式的ls帮助文件. 2. pushd . :将当前文件夹压入栈,使用popd能够回到该文件夹. 3.find -type ...
- java完美equals方法代码段
public boolean equals(Object otherObject) { if(this == otherObject) { // 检測this与otherObject是否引用同一个对象 ...
- ZOJ 3209 Treasure Map DLX
用最少的矩阵覆盖n*m的地图.注意矩阵不能互相覆盖. 这里显然是一个精确覆盖,但因为矩阵拼接过程中,有公共的边,这里须要的技巧就是把矩阵的左边和以下截去一个单位. #include <stdio ...