c++题解 | #【模板】差分#
【模板】差分
https://www.nowcoder.com/practice/4bbc401a5df140309edd6f14debdba42
#include <cstdio> #include <iostream> using namespace std; const int N = 1e5 + 10; typedef long long LL ; LL a[N]; LL d[N]; int n, m; int main() { scanf("%d%d", &n, &m); int tmp; for (int i = 1; i <= n; i++) { scanf("%lld", &a[i]); } // 构造差分数组 for (int i = 1; i <= n; i++) { d[i] = a[i] - a[i - 1]; } int l, r, k; // 执行操作 for (int i = 1; i <= m; i++) { scanf("%d%d%d", &l, &r, &k); d[l] += k; d[r + 1] -= k; } // 恢复操作后的数组 for (int i = 1; i <= n; i++) { a[i] = a[i - 1] + d[i]; } // 输出 for (int i = 1; i <= n; i++) { printf("%lld ",a[i]); } return 0; } // 64 位输出请用 printf("%lld")