前缀和 Prefix Sum

前缀和 Prefix Sum

通过预处理计算出数组的前缀的和,可以大大降低一些查询操作的复杂度,是一种重要而常用的优化。

一维数组的前缀和是最常见的,计算方法也直接,O(n)O(n)时间内完成。

二维和多维的前缀和可以使用容斥原理(Inclusion Exclusion Principle)来计算。例如二维:

sumi,j=sumi1,j+sumi,j1sumi1,j1+ai,jsum_{i,j}=sum_{i-1,j}+sum_{i,j-1}-sum_{i-1,j-1}+a_{i,j}

差分

差分与前缀和相对:

定义:bi={aiai1i[2,n]a1i=1b_i=\begin{cases}a_i-a_{i-1}\,&i \in[2,n] \\ a_1\,&i=1\end{cases}

习题
T225501USACO SilverSubsequences Summing to Sevens2016普及-
T222196地毯普及-
P1387最大正方形普及/提高-
T222195HNOI激光炸弹2003普及/提高-
T222194Poetize6 IncDec Sequence普及+/提高
P3128USACO PlatMax Flow2015普及+/提高
P1314NOIP-S聪明的质监员2011普及+/提高
CF1458ACFRow GCD普及+/提高
T222198NOIP-S组合数问题2016普及+/提高
P6146USACO GoldHelp Yourself2020普及+/提高
T222197三步必杀提高+/省选-
CF1110ECFMagic Stones提高+/省选-