视频加载失败

差分和前缀和

157 字
1 分钟
差分和前缀和

前缀和#

前缀和用于查询区间和.

定义 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/posts/ds/prefix-sum/
作者
Jerry
发布于
2026-04-11
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Jerry
Hello, I'm Jerry.
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签
最新动态
站点统计
文章
80
分类
3
标签
35
总字数
89,198
运行时长
0
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.16.5
文章许可
CC BY-NC-SA 4.0