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阶可以类推
本文来自博客园,作者:whrwlx,转载请注明原文链接:https://www.cnblogs.com/whrwlx/p/18287504