AcWing 797. 差分
原题链接
简单
作者:
blalalt
,
2020-05-03 11:14:11
,
所有人可见
,
阅读 661
C++ 代码
// 公式:b[i]=a[i]-a[i-1], b[1] = a[1], 从1开始
#include <iostream>
using namespace std;
const int N = 1e5+10;
int b[N];
int main() {
int n, m;
cin >> n >> m;
int sum_b = 0; // 记录b数组的和
for (int i=1; i<=n; i++) {
cin >> b[i];
b[i] = b[i] - sum_b; // sum_b = b[1]+...b[i-1] = a[i-1]
sum_b += b[i];
}
int l, r, c;
while (m--) {
cin >> l >> r >> c;
b[l] += c; // 原数组 a 可看作是数组b的前缀和,将第 l 个点加上 c,在 l 点以后的数都会加上 c
b[r+1] -= c; // r+1 点要减去 c, 保证不会影响到 r 以后数列元素的计算
}
int prefix_sum = 0;
for (int i=1; i<=n; i++) {
prefix_sum += b[i];
cout << prefix_sum << ' ';
}
return 0;
}