题解 | 【模板】差分
【模板】差分
https://www.nowcoder.com/practice/4bbc401a5df140309edd6f14debdba42
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
int n, m;
cin >> n >> m;
vector<ll> v(n + 1, 0), diff(n + 2, 0);
// 构建差分数组
for(int i = 1; i <= n; i++){
cin >> v[i];
diff[i] = v[i] - v[i - 1];
}
// 区间加
for(int i = 0; i < m; i++){
int l, r, k;
cin >> l >> r >> k;
diff[l] += k;
diff[r + 1] -= k;
}
// 通过前缀和还原
for(int i = 1; i <= n; i++){
v[i] = v[i - 1] + diff[i];
cout << v[i] << ' ';
}
}
查看20道真题和解析