首页 > 其他分享 >CF446C

CF446C

时间:2023-09-09 10:34:47浏览次数:36  
标签:dots CF446C 矩阵 times bmatrix end 那契

题目链接

description

写个数据结构,支持区间加斐波那契数列和区间求和。

模 1e9+9。

solution

设 \(A=\begin{bmatrix}1&1 \\ 1 & 0 \end{bmatrix}\)。

则 \(\begin{bmatrix} F_{n+1}& F_{n} \end{bmatrix}=\begin{bmatrix}1&0 \end{bmatrix} \times A^n\)。

于是问题变成了区间加公比一定的等比数列。

对于区间 \([l,r]\),如果要加上 \(A^p+A^{p+1}\dots +A^{p+r-l}\),可以先提一个 \(A^{p-1}\) 出来,然后变成了 \(A^{p-1}\times(A^1+A^2+\dots+A^{r-l+1})\)。(矩阵乘法满足对矩阵加法的分配率)。

于是我们在线段树上维护每个节点加了的 \(A^{p-1}\) 的和 \(sum\),询问求值的时候返回 \(sum\times (A^1+A^2+\dots+A^{r-l+1})\) 即可。

下传标记时,给左二子传 \(A^{tag}\),右儿子传 \(A^{tag+mid-l+1}\)(显然这样的标记是满足可加性的)。

预处理矩阵幂次,时间复杂度 \(O((n+q)\log n)\)

hint

关键是把斐波那契数列转化成矩阵,找到合适的方法(满足标记可加)去维护区间。

2*2 的矩阵常数也不小,注意到 \(5\) 是模 1e9+9 下的二次剩余,可以先算出 \(\sqrt{5}\) ,然后用类似的办法维护(把矩阵换成斐波那契数列通项公式)。我的代码实现用的是矩阵。

code

参考代码链接:Submission #222048918 - Codeforces

标签:dots,CF446C,矩阵,times,bmatrix,end,那契
From: https://www.cnblogs.com/FreshOrange/p/17688990.html

相关文章

  • CF446C. DZY Loves Fibonacci Numbers
    好牛的题,写一下。题意:维护一个序列\(a\),长度为\(n\),有\(m\)次操作:1lr:对于\(i\in[l,r]\),\(a_i\leftarrowa_i+f_{i-l+1}\)。2lr:求\(\displaystyle\left(\sum_{i=l}^ra_i\right)\bmod(10^9+9)\)。其中\(f_{i}\)表示第\(i\)个斐波那契数(\(f_0=0,f_1=1,f_n=f_......
  • 【CF446C】DZY Loves Fibonacci Numbers(线段树)
    Description给定一个序列,资瓷区间加上一个斐波那契数列,区间求和。Solution有一个性质:fib[a+b]=fib[a−1]×fib[b]+fib[a]×fib[b+1]fib[a+......
  • CF446C DZY Loves Fibonacci Numbers 题解和加强
    简要题意https://www.luogu.com.cn/problem/CF446C给定一个长度为\(n\)的序列\(A\),要求支持两种操作:1给定区间\((l,r)\)对这个区间内的每个数,依次加斐波那契数列......
  • 8.CF446C DZY Loves Fibonacci Numbers 线段树Lazy标记
    8.CF446CDZYLovesFibonacciNumbers线段树Lazy标记给定序列,要求支持区间对应项加斐波那契数列,区间求和洛谷传送门:​​CF446CDZYLovesFibonacciNumbers-洛谷|计......
  • CF446C(线段树+斐波那契)
    CF446C(线段树+斐波那契数列)CF链接洛谷链接题目大意:区间加斐波那契数列,区间求和分析:一眼鉴定为线段树难点在于如何打标记,合并和传递标记对于斐波那契数列有几个性......
  • CF446C DZY Loves Fibonacci Numbers
    CF446CDZYLovesFibonacciNumbers题目大意在本题中,我们用\(f_i\)来表示第\(i\)个斐波那契数(\(f_1=f_2=1,f_i=f_{i-1}+f_{i-2}(i\ge3)\))。维护一个序列\(a\),长......