Fibonacci思想的灵活应用(洛谷P1011题题解,Java语言描述)
題目要求
P1011題目鏈接
分析
這題我思考了很久,終于在今天有了比較明確的思路,講一下吧。
我們先做個表格(手動的,這里為了展示就用Word重做了一個):
這題標(biāo)簽里有Fibonacci,那么與Fibonacci的關(guān)聯(lián)是什么呢?
我們觀察表格和理解題意,可以發(fā)現(xiàn),每次上車人數(shù)是前兩次上車人數(shù)的和(上車人數(shù)數(shù)列類似于Fibonacci數(shù)列),下車人數(shù)是上一次的上車人數(shù),這就是關(guān)系。
不是說一定要套Fibonacci數(shù)列才是考察了Fibonacci數(shù)列呀!
初次讀題,可能有些困惑,覺得這第二站上車人數(shù)有用嗎?或者會默認(rèn)為上車a下車a,這樣的話你隨便代代測試數(shù)據(jù)就會知道自己錯啦,錯在哪里?
其實(shí)第二次上下車的人是y,即另一個未知量,我們應(yīng)該單獨(dú)為了處理它大動干戈,理解到這個份上,你才能自己做出上面的表格,才能有設(shè)計(jì)算法的思路。
設(shè)計(jì)的話,我想的也比較簡單粗暴,開循環(huán)迭代求解出ai的數(shù)值,再求出y的系數(shù),用最終下車的m減去ai,再除以y的系數(shù)就得到了y,有了y,就可以重新再跑一遍得到x時的ai和yi,相加即是答案。
值得一提的是由于最后一次是有出無進(jìn),所以所謂的最后一次下車人數(shù)其實(shí)是上一次(n-1站)的剩余人數(shù);但最終的第x站,只要不是最后一站,就可以取到本站,而不是上一站。這是特別重要的,當(dāng)然我沒有做第x站是不是最后一站的特判,測試數(shù)據(jù)也沒有,建議大家更細(xì)致一些吧!
AC代碼(Java語言描述)
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//出發(fā)人數(shù)、站數(shù)、抵終人數(shù)、待求站號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);} }總結(jié)
以上是生活随笔為你收集整理的Fibonacci思想的灵活应用(洛谷P1011题题解,Java语言描述)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据结构与算法】森林版并查集V1.0的
- 下一篇: 洛谷P1151、P1200、P1420、