题目

image.png

思路

  • 如下图所示

image.png

  • 原始数组应当从0开始,如果从1开始,迁移到其他问题上未必适用。
  • ACW797.差分 - 图3
  • ACW797.差分 - 图4

    代码

    ```cpp

    include

using namespace std;

const int N = 1e5 + 5;

int main() { int n, m; scanf(“%d %d”, &n, &m); int nums[N]; int diff[N]; for (int i = 0; i < n; ++i) { scanf(“%d”, &nums[i]); }

  1. for(int i = 1; i < n; ++i) {
  2. diff[i] = nums[i] - nums[i - 1];
  3. }
  4. diff[0] = nums[0];
  5. while (m--) {
  6. int l, r, c;
  7. scanf("%d %d %d", &l, &r, &c);
  8. // 题目中计数从1开始,我从0开始
  9. l--;
  10. r--;
  11. diff[l] += c;
  12. diff[r + 1] -= c;
  13. }
  14. for (int i = 0; i < n; i++) {
  15. nums[i] = diff[i] + nums[i - 1];
  16. printf("%d ", nums[i]);
  17. }
  18. return 0;

} ```