AcWing 797. 《算法基础课》模板题--差分
原题链接
简单
作者:
藕丝泥霸
,
2023-11-28 15:38:40
,
所有人可见
,
阅读 67
思路
- 构建差分数组:b[i]=a[i]-a[i-1];
- 用差分数组: b[l]+=c,b[r+1]-=c;
- 还原差分数组:b[i]=b[i-1]+b[i];
c++
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=100010;
int n,m;
int diff_arr[N];
int main(){
scanf("%d%d",&n,&m);
int before(0),now(0);
for(int i=1;i<=n;i++){
scanf("%d",&now);
diff_arr[i]=now-before;
before=now;
}
while(m--){
int l,r,c;
scanf("%d%d%d",&l,&r,&c);
diff_arr[l]+=c;
diff_arr[r+1]-=c;
}
for(int i=1;i<=n;i++){
diff_arr[i]=diff_arr[i-1]+diff_arr[i];
printf("%d ",diff_arr[i]);
}
return 0;
}