Description
给定一个数列 \(g\) ,其中 \(g_i=Ag_{i-1}+B(i\ge1)\) 。
有一个长度为 \(n\) 的序列 \(a\) ,定义 \(f(l,r)=\sum\limits_{i=l}^ra_i\times g_{i-l}\) 。
有 \(m\) 次操作,先给出一个数 \(op\in\{1,2\}\)。
\(op=1\) ,输出 \(\sum\limits_{i=l}^r\sum\limits_{j=i}^rf(i,j)\) 在模 \(998244353\) 意义下的值。
\(op=2\) ,将 \(a_x\) 修改为 \(y\) 。
Solution
可以把式子拆成:
因为 \(l\) 不同,难以计算,所以考虑从 \(g\) 入手。
易得通项公式:
带入式子,得:
式子有亿点麻烦,将 \(r-i+1\) 拆开,得:
考虑维护前面的式子,后面同理。
注意到 \(\sum_{k=0}^{j-1}A^k\) 是等比数列,使用等比数列求和公式。
所以:
再次拆开:
注意到 \(\sum_{j=0}^{i-l}A^j\) 又是一个等比数列,拆开:
其中 \(A^{i-l+1}=\dfrac{A^i}{A^{l-1}}\)。
就可以维护了,使用树状数组分别维护 \(a_i,a_i\times i,i\times i\times a_i,a_i\times i\times A^i,a_i\times A^i\),对于每次询问计算\(A^{l-1}\)的逆元,按式子计算出答案即可。