题目要求

P1011题目链接

分析

这题我思考了很久,终于在今天有了比较明确的思路,讲一下吧。

我们先做个表格(手动的,这里为了展示就用Word重做了一个):

这题标签里有Fibonacci,那么与Fibonacci的关联是什么呢?
我们观察表格和理解题意,可以发现,每次上车人数是前两次上车人数的和(上车人数数列类似于Fibonacci数列),下车人数是上一次的上车人数,这就是关系。
不是说一定要套Fibonacci数列才是考察了Fibonacci数列呀!

初次读题,可能有些困惑,觉得这第二站上车人数有用吗?或者会默认为上车a下车a,这样的话你随便代代测试数据就会知道自己错啦,错在哪里?
其实第二次上下车的人是y,即另一个未知量,我们应该单独为了处理它大动干戈,理解到这个份上,你才能自己做出上面的表格,才能有设计算法的思路。

设计的话,我想的也比较简单粗暴,开循环迭代求解出ai的数值,再求出y的系数,用最终下车的m减去ai,再除以y的系数就得到了y,有了y,就可以重新再跑一遍得到x时的ai和yi,相加即是答案。

值得一提的是由于最后一次是有出无进,所以所谓的最后一次下车人数其实是上一次(n-1站)的剩余人数;但最终的第x站,只要不是最后一站,就可以取到本站,而不是上一站。这是特别重要的,当然我没有做第x站是不是最后一站的特判,测试数据也没有,建议大家更细致一些吧!

AC代码(Java语言描述)

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//出发人数、站数、抵终人数、待求站号int a = scanner.nextInt(), n = scanner.nextInt(), m = scanner.nextInt(), x = scanner.nextInt();scanner.close();//先算along first_up = a, next_up = 0, sum_a = a, sum_y_num = 0, y = 0, temp_up = 0, temp_down = 0, x_a = a, x_y = 0;for (int i = 3; i < n; i++) {temp_up = first_up + next_up;temp_down = next_up;first_up = next_up;next_up = temp_up;sum_a += (temp_up-temp_down);}//算yfirst_up = 0;next_up = 1;for (int i = 3; i < n; i++) {temp_up = first_up + next_up;temp_down = next_up;first_up = next_up;next_up = temp_up;sum_y_num += (temp_up-temp_down);}y = (m-sum_a)/sum_y_num;first_up = a;next_up = 0;for (int i = 3; i <= x; i++) {temp_up = first_up + next_up;temp_down = next_up;first_up = next_up;next_up = temp_up;x_a += (temp_up-temp_down);}first_up = 0;next_up = y;for (int i = 3; i <= x; i++) {temp_up = first_up + next_up;temp_down = next_up;first_up = next_up;next_up = temp_up;x_y += (temp_up-temp_down);}System.out.println(x_a+x_y);}
}

Fibonacci思想的灵活应用(洛谷P1011题题解,Java语言描述)相关推荐

  1. 用博弈论的思想玩游戏(洛谷P3150题题解,Java语言描述)

    前言 博弈论,博大精深啊~~ 这里就是一个简单博弈论的算法题,典型的入门级别,值得学习. 题目要求 P3150题目链接 分析 我们模拟一下胜负情况: m=1时: pb不能分割,所以zs赢了. m=2时 ...

  2. 线性存储的最短平均检索时间(洛谷P1253题题解,Java语言描述)

    题目要求 P1253题目链接 分析 很像 ~洛谷P1223题题解~,也是一种类似SJF的贪心法. 排个序,由于两个不大于10000的数,乘起来还是int,就使用int属性吧. 数据量小,所以Scann ...

  3. 队列模拟约瑟夫问题(洛谷P1996题题解,Java语言描述)

    题目要求 P1996题目链接 分析 以前就研究过"约瑟夫环"问题: <单循环链表求解约瑟夫环问题(Java语言描述)> <杀人游戏~约瑟夫环(洛谷P1145题题解 ...

  4. 利用循环队列的思想进行加密解密(洛谷P1914题题解,Java语言描述)

    前言 在我看来,理解循环队列对我们思考问题的帮助就是: 合理利用"%"的约束,将问题的"越界"重新弹回问题范围内. 本文就是一个例子,循环队列的思想为我快速秒杀 ...

  5. 麦森数(洛谷P1045题题解,Java语言描述)

    题目要求 题目链接 分析 这题挺经典的,快速幂取模算法,如果求出大数再取模就可能T掉. 之前有篇文章写了这个算法:<快速幂算法详解&&快速幂取模算法详解> 既然是Java, ...

  6. 枚举求解单词方阵(洛谷P1101题题解,Java语言描述)

    题目要求 P1101题目链接 分析 可以用DFS做,但我立下了个Flag,所以就用了朴素的枚举来做.... 结果,我的天哪,做了好几个小时-- 其实这种地图题,真的适合 DFS or BFS or D ...

  7. 快速幂||取余运算【模板】(洛谷P1226题题解,Java语言描述)

    题目要求 P1226题目链接 分析 标准的快速幂取模算法板子,之前这个算法我在这篇文章中讲过了:<快速幂算法详解&&快速幂取模算法详解>. 这里选择使用比较简单的API实现 ...

  8. 求子集元素之和(洛谷P2415题题解,Java语言描述)

    题目要求 P2415题目链接 分析 这题我觉得--当个数学题做就好了嘛. 有一个数N的情况:result = 1 * N 有两个数N1.N2的情况:result = 2 * (N1+N2) 有三个数N ...

  9. 用0和5凑被90整除的max数(洛谷P2192题题解,Java语言描述)

    题目要求 P2192题目链接 分析 盘一盘各种情况吧: 要被90整除,就必须被10整除,所以必须有0,没0就是-1啊. 要被90整除,一堆5,靠0是没用的,只能是9个5凑一堆儿才有用,有0但凑不够9个 ...

最新文章

  1. 【Antlr】Antlr重写输入流
  2. 分析师:BTC既是通胀对冲工具 也是有指数级增长潜力的资产
  3. 节选转载:你敢向代码库中添加Boost你就等着被开除吧
  4. SSM整理笔记3——配置解析
  5. 如何在 iPhone 和 iPad 上关闭 Spotlight 建议?
  6. 用python语言提取千位数_C语言怎样提取一个数的十位个位百位千位?
  7. Centos 关闭密码字典检查
  8. matlab泊松分布随机数和图像_常用分布
  9. 计算机word设置斜框线,Word绘制多线斜线表头技巧-word技巧-电脑技巧收藏家
  10. 2021年山东省安全员C证试题及解析及山东省安全员C证模拟考试
  11. 梳妆台行业调研报告 - 市场现状分析与发展前景预测
  12. Go语言安装和配置SDK
  13. [读书][笔记]WINDOWS PE权威指南《零》PE基础
  14. android音频系统(7):通话过程中的音频输出设备切换
  15. MOB短信验证码开发
  16. vmware磁盘已成功扩展,从操作系统内部对磁盘进行重新分区
  17. 怎么调大计算机浏览器内字体,电脑浏览器怎么设置字体大小
  18. niagara框架中串口的打开方式
  19. NLPCC 2023 Shared Task 5:中文医疗教学视频问答任务
  20. 立体匹配 之 代价聚合 滤波器篇

热门文章

  1. 关于 Unity 版本升级后可能会引起偶发光照图错乱的问题
  2. 程序员怎样锻炼编程思维(学习方法)
  3. ios学习笔记——RunTime
  4. win7安装composer
  5. 云监控 Ganglia 安装步骤 (含python module)
  6. mysql jar jdk1.6_Windows下JDK1.6+MySQL+MyEclipse开发环境的配置
  7. datagrip将一个数据库中的数据_跨平台数据库管理神器DataGrip,用上就爱不释手...
  8. python新手入门课_Python基础视频12集入门课程
  9. WordCount处理过程
  10. java获取远程网络图片文件流、压缩保存到本地