差分
差分:
当频繁的对数组内的元素进行区域性性的加减运算的时候使用差分
差分数组的第一个值等于源数组的第一个值
差分数组的第k个值等于原数组第k个值减去第k-1个值
当要让原数组的 [L,R]区域内每个元素都 加/减 c的时候
只需要差分数组的[L](+/ -)c,差分数组的[R](-/+)c
最后原数组的结果等于差分数组的前缀和数组
#include<bits/stdc++.h> using namespace std; int n ,m; int a[100005],b[100005]; void insert(int l, int r , int c) { b[l] += c; b[r + 1] -= c; } int main() { cin>>n>>m; for(int i = 1;i<= n;i++) { cin>>a[i]; insert(i,i,a[i]);//差分数组构建好了 } for(int i = 1;i<=m;i++) { int l,r,c; cin>>l>>r>>c; insert(l,r,c);//将c加进数组b中,后面只需要累加b就得到数组a. } for(int i =1 ;i<=n;i++)b[i] += b[i - 1]; for(int i =1;i<=n;i++)cout<<b[i]<<" "; return 0; }