0
点赞
收藏
分享

微信扫一扫

CF1634 F. Fibonacci Additions

木樨点点 2022-02-12 阅读 37

在这里插入图片描述
题意: q q q次操作,每次给数组 A A A或者 B B B [ l , r ] [l,r] [l,r]位置加上一个斐波那契数列,问每次操作之后 A B AB AB数组是否相同
考虑斐波那契的生成函数
f ( x ) = 1 + 1 x + 2 x 2 + . . . + f i b i − 1 x i + . . . = ∑ i = 0 f i b i + 1 x i x f ( x ) = ∑ i = 1 f i b i x i , x 2 f ( x ) = ∑ i = 2 f i b i − 1 x i f ( x ) − x f ( x ) − x 2 f ( x ) = 1 f ( x ) = 1 1 − x − x 2 f(x)=1+1x+2x^2+...+fib_{i-1}x^i+...=\sum_{i=0}fib_{i+1}x^i\\ xf(x)=\sum_{i=1}fib_{i}x^i,x^2f(x)=\sum_{i=2}fib_{i-1}x^i\\ f(x)-xf(x)-x^2f(x)=1\\ f(x)=\frac 1 {1-x-x^2} f(x)=1+1x+2x2+...+fibi1xi+...=i=0fibi+1xixf(x)=i=1fibixi,x2f(x)=i=2fibi1xif(x)xf(x)x2f(x)=1f(x)=1xx21
如果把 A , B A,B A,B看做两个多项式
A ( x ) = ∑ i = 1 n a i x i B ( x ) = ∑ i = 1 n b i x i A(x)=\sum_{i=1}^{n}a_ix^i\\ B(x)=\sum_{i=1}^{n}b_ix^i A(x)=i=1naixiB(x)=i=1nbixi
那么在 A A A数组 [ l , r ] [l,r] [l,r]位置加上一个斐波那契数列就相当于
A ( x ) + = x l f ( x ) − f i b r − l + 2 x r f ( x ) − f i b r − l + 1 x r + 1 f ( x )    ⟺    A ( x ) + = x l 1 1 − x − x 2 − f i b r − l + 2 x r 1 1 − x − x 2 − f i b r − l + 1 x r + 1 1 1 − x − x 2 A(x)+=x^lf(x)-fib_{r-l+2}x^rf(x)-fib_{r-l+1}x^{r+1}f(x)\\ \iff A(x)+=x^l\frac 1 {1-x-x^2}-fib_{r-l+2}x^r\frac 1 {1-x-x^2}-fib_{r-l+1}x^{r+1}\frac 1 {1-x-x^2} A(x)+=xlf(x)fibrl+2xrf(x)fibrl+1xr+1f(x)A(x)+=xl1xx21fibrl+2xr1xx21fibrl+1xr+11xx21
两边同乘 1 1 − x − x 2 \frac 1 {1-x-x^2} 1xx21
   ⟺    1 1 − x − x 2 A ( x ) + = x l − f i b r − l + 2 x r − f i b r − l + 1 x r + 1 \iff \frac 1 {1-x-x^2}A(x)+=x^l-fib_{r-l+2}x^r-fib_{r-l+1}x^{r+1} 1xx21A(x)+=xlfibrl+2xrfibrl+1xr+1
每次修改复杂度就降为 O ( 1 ) O(1) O(1)

举报

相关推荐

0 条评论