【胡思乱想】用树状数组维护区间加等比数列和区间查和

发布时间 2023-08-02 21:41:33作者: 0x3b800001

等比数列的比值为定值 \(d\ne 1\),那么可以把 \(a\) 差分成 \(b_i=a_i-d\cdot a_{i-1}\),则有

\[a_i=\sum_{j=1}^ib_j\cdot d^{i-j} \]

\[p_i=\sum\limits_{j=1}^ia_i=\sum_{j=1}^ib_j\cdot\sum\limits_{k=0}^{i-j}d^k=\sum_{j=1}^ib_j\cdot\frac{d^{i-j+1}-1}{d-1} \]

显然对于素数模数可以维护一个 \(b_j\) 的前缀和和一个 \(\frac{b_j}{d^j}\) 的前缀和的树状数组,修改是若干个单点的,然后就树状数组做完了。

例题:CF446C