NOIP模擬題 斐波那契數列

2022-05-03 18:24:07 字數 517 閱讀 5841

題目大意

給定長度為$n$序列$a$,將它劃分成盡可能少的若干部分,使得任意部分內兩兩之和均不為斐波那契數列中的某一項。

題解不難發現$2\times 10^9$之內的斐波那契數不超過$50$個

先求出第$i$個數之前最後乙個能和第$i$個數相加為斐波那契數的位置$last_i$。

考慮每一部分$[l,r]$只需滿足$\max\

那麼設$f_i$表示以$i$為結尾最小化分數,那麼轉移到$i$的$j$顯然是一段左右端點均單調不遞減的區間,用單調佇列維護即可。

#include#define debug(x) cerr<

int main() now=max(now,last[i]);

while(q[hd]=f[i]&&hd

} printf("%d\n",f[n]);

return 0;

}

noip模擬賽 斐波那契

分析 暴力分有90,真良心啊.a,b這麼大,連圖都建不出來,肯定是有乙個規律.把每個點的父節點寫出來 0 1 1 12 123 12345 12345678,可以發現每乙個迴圈的長度剛好是斐波那契數列中的第i項,那麼求個字首和,二分求一下lca就可以了.include include include...

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...

迴圈斐波那契數列 斐波那契數列應用

什麼是斐波那契數列 斐波那契數列指的是這樣乙個數列 1,1,2,3,5,8,13,21,34,55,89,144 這個數列從第3項開始,每一項都等於前兩項之和 台階問題 有一段樓梯有10級台階,規定每一步只能跨一級或兩級,要登上第10級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...