本文最后更新于-1天前,其中的信息可能已经过时,如有错误请发送邮件到2392862431@qq.com
基本原理:
1、定义两个数组a,b,a[i]=b1+b2+…….+bi,也就是a使b的前缀和,反过来b是a的差分;
b[1],b[2],b[3],b[4],……,b[n];
a[1],a[2],a[3],a[4],…….,a[n];
b[i]=a[i]-a[i-1];也就是a是b的前缀和,反过来,b就是a的差分。
运用:
用于在某一数据的[l,r]区间上每个数都加上c;

实现过程:
1、构建原数组a的差分数组b
2、在[l,r]区间上加上c;
3、insert函数的构建。
代码实现:
#include <iostream>
using namespace std;
const int N=100010;
int a[N],b[N];
int n,m;
void insert(int l,int r,int c)
{
b[l]+=c;
b[r+1]-=c;
}
int main()
{
int l,r,c;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
cin>>a[i];
insert(i,i,a[i]);
}
while(m--)
{
scanf("%d%d%d",&l,&r,&c);
insert(l,r,c);
}
for(int i=1;i<=n;i++)
{
b[i]=b[i-1]+b[i];
}
for(int i=1;i<=n;i++)
printf("%d ",b)
return 0;
}









