遞推 月落烏啼算錢

2022-05-21 11:51:12 字數 732 閱讀 2586

洛谷的題目名稱越來越瞎叉叉亂寫了

原題傳送門

這道題看上去很高大上,但實際上一看(偷偷翻演算法書)就知道這是某數列的通項公式(作為乙個oier,這是基本的數學素養,不懂者......退役吧)。

既然知道是斐波那契數列,那麼,脫口而出:f(n)=f(n-1)+f(n-2),那麼恭喜您,退役吧(這就是本蒟蒻的最初想法),為什麼不行呢?大家構建一下遞迴樹(棧)就知道了,遞迴層數本身會棧溢位不說,光是時間複雜度,和直接拿題目給的公式模擬的時間複雜度相當了,大約是o(nn),也就是說,您成功的吧o(n)的水題變成了np完全問題,那麼正解是什麼呢?

其實注意一下題目的分類——遞推,便可知道正解:f[n]=f[n-1]+f[n-2],看上去沒什麼區別對嗎?那麼恭喜您又可以退役了(非專業人士請走開),這樣直接將時間降為線性,將空間也降為線性,但是,這是dp的思想,違背了題目的初衷(雖然已經能ac):遞迴,況且也不是最好的演算法,所以——還需要優化。時間已降為線性,再要減也可以,但要用斐波那契堆,過於複雜,不展開了(不會),但空間可以降為o(1)——運用遞推。

不多廢話了,上**(真正的程式設計師跟他講解再多都沒有直接上**直觀)。

#includeusing namespace std;

long long a=1,b=1,c=0;///因為n<=48,所以大一點,用long long

int n,i;

int main()

cout《等我學會斐波那契堆後再來繼續優化吧,時間複雜度應該是可以降為o(log2n).

C語言 月落烏啼算錢(斐波那契數列)

吃完 pizza,月落烏啼知道超出自己的預算了。為了不在愛與愁大神面前獻醜,只好還是硬著頭皮去算錢 算完錢後,月落烏啼想著 你 坑我,以下用閩南語讀 歸粒靠杯靠畝誒,以下用英讀 是伊特遊!於是當愛與愁大神問多少錢時,月落烏啼說了一堆亂碼。愛與愁大神說 算了算了,我只問第n樣菜 多少?月落烏啼寫出了 ...

洛谷P1720 月落烏啼算錢(斐波那契數列)

題目鏈結 題目背景 本道題目木有隱藏歌曲 不用猜了 愛與愁的故事第一彈 heartache 最終章。吃完 pizza,月落烏啼知道超出自己的預算了。為了不在愛與愁大神面前獻醜,只好還是硬著頭皮去算錢 題目描述 算完錢後,月落烏啼想著 你 坑我,以下用閩南語讀 歸粒靠杯靠畝誒,以下用英讀 是伊特遊!於...