这题的话,我能玩一年

今天做了很多递推的题,这题无疑是最复杂的


其实可以看出来,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)


#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 递推难题相关推荐

  1. hdu 2047(递推)

    阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  2. hdu 2045(递推)

    1个格子的时候   3种 2个格子的时候   6种 3个格子的时候   6种 4个格子的时候: 分两种情况: 前3个格子符合所有规则,即间隔颜色不同,同时第1个和第3个颜色也不同.这时候第4个格子只有 ...

  3. 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] 类似于斐波那契数列的递推式子吧, 但 ...

  4. 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 ...

  5. hdu 2013 蟠桃记-递推-[解题报告]C++

    蟠桃记 问题描述 : 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题! 什么问题?他研究的问题是蟠桃一共有多少个! 不过,到最 ...

  6. HDU 6185 Covering 矩阵快速幂 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6185 题目描述: 一个4*n的矩形, 你用1*2的矩形覆盖有多少种方案, n <= 1e18 ...

  7. HDU 6092 Rikka with Subset 思维 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6092 题目描述: 给你一个集合的所有子集各个和, 让你找到这个集合, 输出字典序最小 解题思路: 下 ...

  8. HDU2045 不容易系列之(3)—— LELE的RPG难题(递推)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission ...

  9. hdu 1133 Buy the Ticket(递推+精度精算)

    做这道题之前可以先做:hdu 1267(递推方法和这道题是一样的知识没有精度计算)这是我的博客链接接:http://www.cnblogs.com/jiangjing/archive/2013/01/ ...

最新文章

  1. (0057)iOS开发之Xcode9进行iOS设备无线调试
  2. Jeecg 切换默认首页方法
  3. Theano 中文文档 0.9 - 5.1 Ubuntu安装说明
  4. java quartz TriggerBuilder
  5. 那么多人吹Python,但我真怕你不知道是为什么!
  6. 51Nod-1640-天气晴朗的魔法(最小生成树)
  7. SQL Server 2005的Resource数据库
  8. 《捉妖记》的命格解析
  9. python爬虫分析豆瓣中最新电影的影评
  10. 百货商城销售管理系统
  11. Version in “./docker-compose.yml“ is unsupported.
  12. 苹果 macOS 13 开发者预览版 Beta 11(内部版本号:22A5373b)发布
  13. 工业软件中的EDA软件名单
  14. java后端开发流程总结
  15. 菊花厂IOT解决方案
  16. PHP cURL学习-域名备案查询
  17. 生物等效性试验样本量,效能,置信区间计算神器之R包——PowerTOST
  18. 新起点大学英语综合教程2张伯香第一单元课后答案
  19. 论文评审最大流_为什么论文的审稿流程那么复杂?
  20. 爱好高科技之人脸识别模块

热门文章

  1. eclipse项目一直显示有错,但是一直找不到错误在哪里
  2. 图 之遍历----深度优先遍历0.o
  3. mysql 使用sum limit_mysql踩坑记录之limit和sum函数混合使用问题
  4. Oracle 数据怎么实时同步到 MySQL | 亲测干货分享建议收藏
  5. Oracle 数据怎么实时同步到 Elasticsearch | 亲测干货建议收藏
  6. 非root用户组启动sftp_如何在 Debian 10 中配置 Chroot 环境的 SFTP 服务 | Linux 中国
  7. Mysql 零距离-入门(二)
  8. Java 大小写转换
  9. 人体轮廓_人体艺术:赏世界著名的女人体油画:身体轮廓
  10. arm linux sms,基于arm处理器的手机短消息加密系统 encryption system for sms based on arm.pdf...