题解 | 【模板】差分

【模板】差分

https://www.nowcoder.com/practice/4bbc401a5df140309edd6f14debdba42

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;

    vector<long long> a(n + 2, 0), d(n + 2, 0);

    // 读入原数组
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }

    // 构建差分数组
    for (int i = 1; i <= n; i++) {
        d[i] = a[i] - a[i - 1];
    }

    // 区间加操作
    while (m--) {
        int l, r, k;
        cin >> l >> r >> k;
        d[l] += k;
        d[r + 1] -= k;
    }

    // 还原并输出
    for (int i = 1; i <= n; i++) {
        a[i] = a[i - 1] + d[i];
        cout << a[i] << ' ';
    }

    return 0;
}

全部评论

相关推荐

joecii:如果没有工资,那可能没有工资是这家公司最小的问题了
找实习记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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