题目
797. 差分
思路
差分的实质是通过构造数组b减少时间复杂度,数组a为初始数据,构造数组b,数组a是b的前缀和,通过对数组b操作就可以实现数组a每个数加上c,而对数组b的操作在单位时间内即可完成,对数组b操作完后,再用b表示a。
代码
#include<iostream>
using namespace std;
const int N=100010;
int main()
{int n,m;cin>>n>>m;int a[N],b[N];for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n;i++){b[i]=a[i]-a[i-1];}while(m--){int l,r,c;cin>>l>>r>>c;b[l]=b[l]+c;b[r+1]=b[r+1]-c;}for(int i=1;i<=n;i++){a[i]=a[i-1]+b[i];cout<<a[i]<<" ";}return 0;
}