差分

#include<iostream>
using namespace std;
const  int N=100010;
int n[N]={0},m[N]={0};
int insert(int l,int r,int c)
{
     m[l]+=c;
     m[r+1]-=c;//通过这两步可以使m的前缀和数组l到r的每一个数加上C 
}
int main()
{
	int a,b;
	cin>>a>>b;
	for(int i=1;i<=a;i++){
		cin>>n[i];
	    m[i]=n[i]-n[i-1];//这里也可以写成insert(i,i,n[i); 
}
	int l,r,c;
	while(b--)
	{
		cin>>l>>r>>c;
		insert(l,r,c);
	}
	for(int i=1;i<=a;i++)m[i]+=m[i-1];// 将m数组变为自己的前缀和数组 
	for(int i=1;i<=a;i++)cout<<m[i]<<" ";
}

全部评论

相关推荐

07-01 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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