水题,我们直接按照差分的定义处理所有修改操作,最后前缀和一下加到原始数组上即可。
当然你也可以对原始数组差分一下,然后直接在原数组上用差分维护修改,最后前缀和完直接出答案。
#include<bits/stdc++.h>
using i64 = long long;
int main() {
std::cin.tie(nullptr)->sync_with_stdio(false);
int n, m;
std::cin >> n >> m;
std::vector<i64> a(n + 1), b = a;
for (int i = 1; i <= n; i++) {
std::cin >> a[i];
}
while (m--) {
int l, r, x;
std::cin >> l >> r >> x;
b[l] += x;
b[r + 1] -= x;
}
std::partial_sum(b.begin(), b.end(), b.begin());
for (int i = 1; i <= n; i++) {
std::cout << a[i] + b[i] << " ";
}
return 0;
}

京公网安备 11010502036488号