題目大意
給定長度為$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級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...