Jerry's Blog

Back

前缀和#

前缀和用于查询区间和.

定义 s[i]s[i] 表示区间 [1,i][1,i] 之间所有元素的和(即前 ii 个数的和),不难发现,区间 [l,r][l,r] 的和为 s[r]s[l1]s[r] - s[l-1]

计算 ss 数组可以使用递推的方式,有 s[i]=s[i1]+a[i]s[i] = s[i-1] + a[i]

差分#

差分用于区间修改,是前缀和的逆运算.

定义 d[i]d[i] 表示 a[i]a[i] 相对 a[i1]a[i-1] 变化了多少,即 d[i]=a[i]a[i1]d[i] = a[i] - a[i-1]

当想要对 [l,r][l, r] 增加 xx 时,只需要将 d[l]d[l] 增加 xxd[r+1]d[r+1] 减少 xx

如果想要将差分数组还原成原数组,可以使用下面的公式:a[i]=a[i1]+d[i]a[i] = a[i-1] + d[i]

差分和前缀和
https://blog.jerrylab.top/blog/ds/prefix-sum
Author Jerry
Published at 2026年4月11日