ZROI#1119
看起来非常怪异…因为之前知道 $Fibonacii$ 数列有通项公式,所以就一直以为这题是 $F$ 的递推转通项…
万万没想到,这竟然是个矩阵加速递推…
$⑧$ 说了,伤心,直接上式子:
$$\begin{aligned} F_{n} &=\sum_{i=0}^{n} f_{i} f_{n-i} \ &=\sum_{i=0}^{n}\left(f_{i-1}+f_{i-2}\right) f_{n-i}+f_{1} f_{n-1}+f_{0} f_{n} \ &=\sum_{i=0}^{n-1} f_{i} f_{n-i-1}-f_{0} f_{n-1}+\sum_{i=0}^{n-2} f_{i} f_{n-i-2}+f_{1} f_{n-1}+f_{0} f_{n} \ &=F_{n-1}+F_{n-2}+f_{1} f_{n-1}-f_{0} f_{n-1}+f_{0} f_{n} \ &=F_{n-1}+F_{n-2}+f_{n} \end{aligned}$$
所以我们有了递推公式,我们发现这个递推公式是和 $F$ 以及 $f$ 的相邻两项相关的,所以我们的初始矩阵和目标矩阵应保留至少四维状态.
而因为答案要求的是 $F$ 的前缀和,所以要多加一维用以辅助递推,于是我们的转移矩阵应该是 $5\times 5$ 的.
我们发现这个初始矩阵和目标矩阵应该是这个亚子:
$$\left[\begin{array}{lllll}{?} & {?} & {?} & {?} & {?} \ {?} & {?} & {?} & {?} & {?} \ {?} & {?} & {?} & {?} & {?} \ {?} & {?} & {?} & {?} & {?} \ {?} & {?} & {?} & {?} & {?}\end{array}\right]\left[\begin{array}{c}{F_{i}} \ {F_{i-1}} \ {f_{i}} \ {f_{i-1}} \ {a n s_{i}}\end{array}\right]=\left[\begin{array}{c}{F_{i+1}} \ {F_{i}} \ {f_{i+1}} \ {f_{i}} \ {a n s_{i+1}}\end{array}\right]$$
问号矩阵是我们要推导的转移矩阵.
经过推导,可以得到转移矩阵是这样的:
$$\left[\begin{array}{lllll}{1} & {1} & {0} & {0} & {1} \ {1} & {0} & {0} & {0} & {1} \ {1} & {0} & {1} & {1} & {1} \ {1} & {0} & {1} & {0} & {1} \ {0} & {0} & {0} & {0} & {1}\end{array}\right]\left[\begin{array}{c}{F_{i}} \ {F_{i-1}} \ {f_{i}} \ {f_{i-1}} \ {a n s_{i}}\end{array}\right]=\left[\begin{array}{c}{F_{i+1}} \ {F_{i}} \ {f_{i+1}} \ {f_{i}} \ {a n s_{i+1}}\end{array}\right]$$
至于如何推导,我还会有一篇博文专门讲解如何推导一个矩阵,在此不再赘述.
直接快乐地上一个矩阵快速幂即可.
初始矩阵是 $1\times 5$ 的 $:{2,1,1,1,3}.$
需要注意的是,因为初始矩阵是从第一项开始的,每乘一次转移矩阵向后递推一次,所以我们需要的转移次数是 $n-1$ 的.
愉快$AC!$.
1 |
|