hdu 1297 递推难题
这题的话,我能玩一年
今天做了很多递推的题,这题无疑是最复杂的
其实可以看出来,2,3,4,5为一类,不妨定义为2型,1,6为一类,定义为1型
规定num[i]为结尾是i的凹槽的数量
我们可以能轻易的推出 sum = num[1]*2+num[2]*4
现在我们开始分析这个递推式的构成
根据第n个凹槽前 能不能构成一把lock,我们将情况分为两类
A:能构成lock
1.如果当前结尾为1类,我们用‘1’分析好了(下面也是用1),n-1的结尾必然不能是‘6’,因为1和6不能直接相连,根据题意就知道了,可以推出num1[i] = lock[i-1] - num1[i-1]
2.如果当前结尾为2类,那和n-1的结尾无任何关系,则num2[i] = lock[i-1]
B:加入n后才能构成lock
很容易推出前n-1应该有两种种类,因为题目说了至少有三种种类的凹槽
1.如果当前结尾是‘1’(1类),我们要分两种讨论,有‘6’和无'6',至于原因,还是因为‘6’不能放在n-1结尾处
a.取‘6’
(哎,数学符号打不出来额,文字描述好了)
从剩下的4个内取1个,组合数为4,排列数为(2^(n-2)-1) 因为n-1处不能放‘6’
b.不取‘6’
从剩下的4个内取两个,组合数为为6,排列数为(2^(n-1)-2)
2.如果当前是‘2’(2类)
从剩下的5个内取两个,但是1和6不能同时取,所以-1,则组合数为9,排列数为(2^(n-1)-2)
![](/assets/blank.gif)
![](/assets/blank.gif)
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm>using namespace std;int main() {__int64 lock[26],num1[26],num2[26];__int64 t;num1[3] = 16;num2[3] = 18;lock[3] = 104;t = num1[3];for(int i=4;i<26;i++){num1[i] = lock[i-1] - t; //sub num6[i-1]num2[i] = lock[i-1];num1[i] += 4*((int)pow((float)2,i-2)-1)+6*((int)pow((float)2,i-1)-2);num2[i] += 9*((int)pow((float)2,i-1)-2);lock[i] = 2*num1[i] + 4*num2[i];t = num1[i];}for(int i=3;i<26;i++){printf("N=%d: %I64d\n",i,lock[i]);}//cout << "Hello world!" << endl;return 0; }
View Code
转载于:https://www.cnblogs.com/EdsonLin/p/5342924.html
hdu 1297 递推难题相关推荐
- hdu 2047(递推)
阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- hdu 2045(递推)
1个格子的时候 3种 2个格子的时候 6种 3个格子的时候 6种 4个格子的时候: 分两种情况: 前3个格子符合所有规则,即间隔颜色不同,同时第1个和第3个颜色也不同.这时候第4个格子只有 ...
- Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)
题目链接 F[1] = a, F[2] = b, F[i] = 2 * F[i-2] + F[i-1] + i ^ 4, (i >= 3) 现在要求F[N] 类似于斐波那契数列的递推式子吧, 但 ...
- hdu 2709 递推
题意:给出一个数,把他拆成2^n和的形式,问有多少种拆法 链接:点我 对6进行分析 1 1 1 1 1 1 1 1 1 1 2 1 1 2 2 1 1 4 2 2 4 2 4 对最上面4个,显然是由4 ...
- hdu 2013 蟠桃记-递推-[解题报告]C++
蟠桃记 问题描述 : 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题! 什么问题?他研究的问题是蟠桃一共有多少个! 不过,到最 ...
- HDU 6185 Covering 矩阵快速幂 递推
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6185 题目描述: 一个4*n的矩形, 你用1*2的矩形覆盖有多少种方案, n <= 1e18 ...
- HDU 6092 Rikka with Subset 思维 递推
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6092 题目描述: 给你一个集合的所有子集各个和, 让你找到这个集合, 输出字典序最小 解题思路: 下 ...
- HDU2045 不容易系列之(3)—— LELE的RPG难题(递推)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission ...
- hdu 1133 Buy the Ticket(递推+精度精算)
做这道题之前可以先做:hdu 1267(递推方法和这道题是一样的知识没有精度计算)这是我的博客链接接:http://www.cnblogs.com/jiangjing/archive/2013/01/ ...
最新文章
- (0057)iOS开发之Xcode9进行iOS设备无线调试
- Jeecg 切换默认首页方法
- Theano 中文文档 0.9 - 5.1 Ubuntu安装说明
- java quartz TriggerBuilder
- 那么多人吹Python,但我真怕你不知道是为什么!
- 51Nod-1640-天气晴朗的魔法(最小生成树)
- SQL Server 2005的Resource数据库
- 《捉妖记》的命格解析
- python爬虫分析豆瓣中最新电影的影评
- 百货商城销售管理系统
- Version in “./docker-compose.yml“ is unsupported.
- 苹果 macOS 13 开发者预览版 Beta 11(内部版本号:22A5373b)发布
- 工业软件中的EDA软件名单
- java后端开发流程总结
- 菊花厂IOT解决方案
- PHP cURL学习-域名备案查询
- 生物等效性试验样本量,效能,置信区间计算神器之R包——PowerTOST
- 新起点大学英语综合教程2张伯香第一单元课后答案
- 论文评审最大流_为什么论文的审稿流程那么复杂?
- 爱好高科技之人脸识别模块
热门文章
- eclipse项目一直显示有错,但是一直找不到错误在哪里
- 图 之遍历----深度优先遍历0.o
- mysql 使用sum limit_mysql踩坑记录之limit和sum函数混合使用问题
- Oracle 数据怎么实时同步到 MySQL | 亲测干货分享建议收藏
- Oracle 数据怎么实时同步到 Elasticsearch | 亲测干货建议收藏
- 非root用户组启动sftp_如何在 Debian 10 中配置 Chroot 环境的 SFTP 服务 | Linux 中国
- Mysql 零距离-入门(二)
- Java 大小写转换
- 人体轮廓_人体艺术:赏世界著名的女人体油画:身体轮廓
- arm linux sms,基于arm处理器的手机短消息加密系统 encryption system for sms based on arm.pdf...