差分数组797

 

 首先要了解几个概念,假定b(n)是a(n)的差分数组。(1)差分数组:b(n)=a(n)-a(n-1),(2)a(i)数组的值是差分数组b(1)-b(i)的和。即前缀和sum(i)。差分数组的前缀和:b(n)+=b(n-1)(3)在b(l)的基础上+c,在b(r+1)的基础上-c,就是在a(l)-a(r)的范围内+c,影响的是a(l~r)的范围,不影响a(r)后面的范围。

#include<iostream>

using namespace std;

const int N=1e5+10;

int a[N];

int change[N];

int main(){

int n,m;

cin>>n>>m;

for(int i=1;i<=n;i++){

cin>>a[i];

change[i]=a[i]-a[i-1];//差分数组

}

while(m--){

int l,r,c;

cin>>l>>r>>c;

change[l]+=c;

change[r+1]-=c;

}

for(int i=1;i<=n;i++){

//方法1:a[i]=change[i]+a[i-1]

//方法2:change[i]+=change[i-1]

cout<<change[i]+=change[i-1]<<"  ";

}

}

posted @ 2023-03-09 16:38  chenxinyue  阅读(14)  评论(0编辑  收藏  举报