引入
这是由 DengDuck 总结整理的一种处理线段树类问题的算法。
板题引入
给定数列 \(A\{a_i\}\) 和 \(B\{b_i\}\)。
其中有以下操作:
C l r z
:\(a_i\leftarrow a_i+z\),\(i\in [l,r]\)
Q l r
:\(\sum\limits_{i=l}^r a_i\times b_i\)
算法概要
先预处理 \(B\) 的前缀和 \(sum_i\)。
对于每一个线段树上的区间的修改实际上就是 \(z\times sum_{[l,r]}\)。
然后懒标记依旧下传 \(z\),pushdown
操作就同理了。