題目
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;
}