前缀和与差分的核心思想是预处理,可以在暴力枚举的过程中,快速给出查询的结果,从而优化时间复杂度。是经典的用空间替换时间的做法。
学完差分之后,大家会发现,前缀和与差分是一对互逆的运算。
【模板】差分_牛客题霸_牛客网
描述
对于给定的长度为 nn 的数组 {a1,a2,…,an}{a1,a2,…,an} ,你需要维护:
1. 1. 区间修改:将 [l,r][l,r] 这个区间中的全部元素增加 xx ;
在全部修改完成后,直接输出最终的数组。
输入描述:
第一行输入两个整数 n,q(1≦n,q≦5×105)n,q(1≦n,q≦5×105) 代表数组中的元素数量、操作次数。
第二行输入 nn 个整数 a1,a2,…,an(−107≦ai≦107)a1,a2,…,an(−107≦ai≦107) 代表初始数组。
此后 qq 行,每行输入三个整数 l,r,d(1≦l≦r≦n; −107≦d≦107)l,r,d(1≦l≦r≦n; −107≦d≦107) 代表一次修改。
输出描述:
在一行上输出 nn 个整数,代表最终的数组。
示例1
输入:
6 2 1 1 4 5 1 4 1 6 -3 4 4 1
复制输出:
-2 -2 1 3 -2 1
复制说明:
对于第一次操作,数组变为 {−2,−2,1,2,−2,1}{−2,−2,1,2,−2,1}(全局修改); 对于第二次操作,数组变为 {−2,−2,1,3,−2,1}{−2,−2,1,3,−2,1}(单点修改)。