题解 | 【模板】差分

【模板】差分

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] << ' ';
    }
}

全部评论

相关推荐

喵_coding:年底缺人是短视频营造出来的 而且一般说的也很宽泛 不是特指后端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务