原题链接:登录—专业IT笔试面试备考平台_牛客网
目录
1. 题目描述
2. 思路分析
3. 代码实现
1. 题目描述
2. 思路分析
差分模板。
b[0]=a[0];
b[1]=a[1]-a[0];
b[2]=a[2]-a[1];
......
b[n-1]=a[n-1]-a[n-2];
b[n]=a[n]-a[n-1];
差分标记:b[l]+=k,b[r+1]-=k;
对差分数组做前缀和,就是操作后的原数组。
3. 代码实现
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int N=1e5+10;
int a[N],b[N];
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n,m; cin>>n>>m;
for(int i=1;i<=n;i++) {
cin>>a[i];
b[i]=a[i]-a[i-1];
}
while(m--){
int l,r,k; cin>>l>>r>>k;
b[l]+=k,b[r+1]-=k;
}
for(int i=1;i<=n;i++) b[i]+=b[i-1];
for(int i=1;i<=n;i++) cout<<b[i]<<" ";
return 0;
}