n阶前缀和 の 拆解

二阶

\[\sum_{i=l}^{r} \sum^{i}_{j=1} a_j \]

\[=\sum_{i=l}^{r} (r-i+1) a_i \]

\[=(r+1)\sum_{i=l}^{r} a_i+\sum_{i=l}^{r} i \cdot a_i \]

这个很好理解,因为对于第 \(i\) 个数,他加了 \((r-i+1)\) 次

三阶

正常拆解

\[\sum_{i=l}^{r} \sum^{i}{j=1} \sum{k=1}^{j} a_k \]

\[=\sum_{i=l}^{r} \sum_{j=1}^{i} (i-j+1) a_j \]

\[=\sum_{i=l}^{r} {\Large (}(i+1) \cdot \sum_{j=1}^{i} a_j - \sum_{j=1}^{i} j \cdot a_j{\Large )} \]

\[=\sum_{i=l}^{r} {\Large (} (i+1) \cdot \sum_{j=1}^{i} a_j {\Large )} - \sum_{i=l}^{r} \sum_{j=1}^{i} j \cdot a_j \]

直接拆开可得(可用数学归纳法):

\[\sum^{r}{i=l} \frac{(r-i+1)(r+i+2)}{2} a_i - \sum{i=l}^{r} i \cdot (r-i+1) a_i \]

合并,得:

\[\sum^{r}_{i=l} \frac{(r-i+1)(r-i+2)}{2} a_i \]

展开,得:

\[\sum^{r}_{i=l} \frac{r^2+i^2-2ri-3i+2}{2} a_i \]

即:

\[\frac{1}{2}\sum^{r}{i=l} i^2 \cdot a_i -\frac{2r+3}{2} \sum^{r}{i=l} i \cdot a_i + \frac{r^2+2}{2}\sum^{r}_{i=l} a_i \]

即维护 \(\sum^{r}{i=l} i^2 \cdot a_i\),\(\sum^{r}{i=l} i \cdot a_i\),\(\sum^{r}_{i=l} a_i\) 即可

另一种方法

\[b_i=\sum_{j=1}^i a_j \]

然后原式化为:

\[\sum_{i=l}^{r} \sum^{i}_{j=1} b_j \]

同2阶,展开:

\[(r+1) \cdot \sum_{i=l}^{r} b_i - \sum_{i=l}^{r} i \cdot b_i \]

然后把

\[b_i=\sum_{j=1}^i a_j \]

代入得:

\[(r+1) \cdot \sum_{i=l}^{r} \sum_{j=1}^i a_j - \sum_{i=l}^{r} i \cdot \sum_{j=1}^i a_j \]

其中 \(\sum_{i=l}^{r} \sum_{j=1}^i a_j\) 是不是很眼熟!

展开得:

\[(r+1) \cdot \sum_{i=l}^{r} (r-i+1) a_i - \sum_{i=l}^{r} i \cdot (r-i+1) a_j \]

然后就是同第一种方法得到答案啦!

n阶可以类推