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总是当 ...
随机推荐
- [React Intl] Install and Configure the Entry Point of react-intl
We’ll install react-intl, then add it to the mounting point of our React app. Then, we’ll use react- ...
- 为什么我要选择erlang+go进行server架构(2)
原创文章,转载请注明出处:server非业余研究http://blog.csdn.net/erlib 作者Sunface 为什么我要选择Erlang呢? 一.erlang特别适合中小团队创业: erl ...
- jQuery实现多种切换效果的图片切换的五款插件
1:Nivo SliderNivoslider:丰富的图片切换效果 官方网址:https://themeisle.com/plugins/nivo-slider 查看演示:https://www.he ...
- Android事件分发机制具体解释
转载注明出处:http://blog.csdn.net/xiaohanluo/article/details/52416141 1. 概述 Android日常研发时,与View接触占领相当多的时间.而 ...
- swift学习第四天:swift中的循环
区间for循环 for i in 0..<10 { print(i) } for i in 0...10 { print(i) } 特殊写法 如果在for循环中不需要用到下标i for _ in ...
- 关于DP与背包
听说过动态规划(DP)的同学应该都知道有背包问题的存在. 首先我们来了解一下动态规划 基本思想: 动态规划算法通常用于求解具有某种最优性质的问题.在这类问题中, 可能会有很多可行解.没一个解都对应于一 ...
- JNI:no implementation found in native...
一 javah引发的问题 BUG:D/dalvikvm( 1704): Trying to load lib /data/data/com.ulang/lib/libulangaudio.so 0x ...
- 【30.23%】【codeforces 552C】Vanya and Scales
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- HBase总结(十一)hbase Java API 介绍及使用演示样例
几个相关类与HBase数据模型之间的相应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) H ...
- jquery-2 jQuery原理和核心方法(多看学习视频)
jquery-2 jQuery原理和核心方法(多看学习视频) 一.总结 一句话总结:jQuery就是普通的js对象,只不过方法比较多而已,属性就length一个. 1.jquery的链式操作的底层原 ...