AcWing 797. 差分-C++
原题链接
简单
作者:
码
,
2020-05-17 11:10:06
,
所有人可见
,
阅读 2198
#include<iostream>
using namespace std;
const int N=100010;
int a[N],b[N];//a[N]为原序列 b[N]为差分序列
int main()
{
//前缀和的差分=原序列 差分的前缀和=原序列,
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];//读取原序列的值
//构造差分序列 由a[i]=b[1]+b[2]+...+b[i]得出b[i]=a[i]-a[i-1]
for(int i=1;i<=n;i++) b[i]=a[i]-a[i-1];
while(m--)//对差分序列进行处理
{
int l,r,c;
cin>>l>>r>>c;
b[l]+=c;
b[r+1]-=c;
}
for(int i=1;i<=n;i++)//对差分序列进行求和来获得原序列,∵差分序列的前缀和=原序列
{
b[i]+=b[i-1];//s[i]=s[i-1]+a[i]
cout<<b[i]<<" ";
}
return 0;
}
还是构造差分序列好理解,,
!