区间加等比数列


给出一个长度为 $n$ 的数列
接下来进行 $m$ 次操作
1 l r k a
i = l ~ r A[i] += k * a ^ (i - l)
2 l r k a
i = l ~ r sum A[i] * k * a ^ (i - l)
最后输出一遍整个序列

输出对 $998244353$ 取模
n,m <= 1e5, 5s

操作分块+序列分块
首先假设每 $B$ 次操作整个重构一遍 块内修改对询问贡献的复杂度即为 $mB$
考虑如何重构.
首先散块暴力,设分块块长为 $B2$,这部分复杂度即为 $mB2$
整块
考虑修改
整块序列的贡献形式是很多小分式求和,可以用分治ntt+多项式求逆解决
记 $b=max(B,B2)$  复杂度即为 $O(b\log^2b)$
考虑查询
一个块对多个询问的影响可写成多点求值的形式 $O(b\log^2b)$
散块部分可暴力 $mB2$
总复杂度即 $m(B+B2)+\dfrac{m}{B2}+\dfrac{nb\log^2b}{B2}$
设 $n,m$ 同阶 取 $B=B2=\sqrt n\log n$.
总体就是 $O(n\sqrt n\log n)$.

细节较多,不是很能跑过暴力.

posted @ 2023-10-23 13:32  QedDust  阅读(105)  评论(0)    收藏  举报