题解 | 【模板】差分

【模板】差分

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

//  #牛客春招刷题训练营# https://www.nowcoder.com/discuss/726480854079250432
//  我先是用的暴力,没有算时间复杂度,超时了,还不知道差分看的题解,C++第一篇有图片我感觉讲的挺好的
#include <iostream>
#include <vector>
#define ll long long
using namespace std;

int main() {
  int n, m;
  cin >> n >> m;
  vector<ll> a(n);
  vector<ll> b(n);
  cin >> a[0];
  b[0] = a[0];
  for (int i = 1; i < n; i++) {
    cin >> a[i];
    b[i] = a[i] - a[i - 1];//------计算差分,本来最好数组多开一个
  }
  int l, r, k;
  while(m--){
    cin >> l >> r >> k;
    b[l - 1] += k;
    if (r < n) b[r] -= k;
  }
  a[0] = b[0];
  cout << b[0] << ' ';
  for (int i = 1; i < n; i++){
    a[i] = a[i - 1] + b[i];
    cout << a[i] << ' ';
  }
}
// 64 位输出请用 printf("%lld")

#写题解领奖励##牛客春招刷题训练营#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-21 13:41
点赞 评论 收藏
分享
06-20 19:40
中原工学院 Java
网络存储:十几天不会让你拉人办卡就结束了吧?
点赞 评论 收藏
分享
06-10 23:36
已编辑
首都经济贸易大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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