注:以下图片截自他人文章,仅自己学习记录所用,照片版权属于原作者,如有侵权,可联系本人删除
一、 题目
二、学习到的知识
1.差分运算
2.vector
·开头写#include
·定义:vector<类型>数组名称(个数、初始值)
·常用基础操作
3.#define int long long 与 signed main()搭配
三、解题代码
#include<iostream>
#include<vector>
#define int long long
using namespace std;
signed main()
{
int n,q;//彩灯数量,操作次数
cin>>n>>q;
vector<int>a(n);//初始亮度,从0开始,所以n
for(int i=0;i<n;i++)
cin>>a[i];
vector<int>d(n+1,0);//与前一个的差值,从1开始,所以n+1
for(int i=0;i<q;i++)
{
int l,r,x;
cin>>l>>r>>x;
d[l]+=x;
if(r<n) //注意
{
d[r+1]-=x;
}
}
for(int i=1;i<=n;i++)
{
d[i]+=d[i-1];//i=前面的和加起来
a[i-1]+=d[i];
if(a[i-1]<0)
{
a[i-1]=0;
}
}
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}