标签:小明 https int register 差分 500100 long 彩灯
题目链接:https://www.lanqiao.cn/problems/1276/learning/;
对于一段区间内的加上某个数或者减去某个数字,或者是求某个子段区间的元素之和,一般用前缀和还是差分的思想去优化
什么是前缀和?什么是差分呢?
这里转载一篇大佬的文章用来学习一下:
转载自:https://blog.csdn.net/weixin_45629285/article/details/111146240
那我们来看题:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,q; 4 long long a[500100]; 5 long long b[500100]; 6 int main() 7 { 8 ios::sync_with_stdio(false); 9 cin>>n>>q; 10 for(register int i=1;i<=n;i++) 11 { 12 cin>>a[i]; 13 b[i]=a[i]-a[i-1];//构造差分数组 14 } 15 while(q--) 16 { 17 int l,r,x; 18 cin>>l>>r>>x; 19 b[l]+=x;//头上加一个x 20 b[r+1]-=x;//尾巴减一个x 21 } 22 for(register int i=1;i<=n;i++) 23 { 24 a[i]=b[i]+a[i-1];//回归原数组 25 if(a[i]<0) 26 cout<<"0"<<' '; 27 else 28 cout<<a[i]<<' '; 29 } 30 return 0; 31 }
标签:小明,https,int,register,差分,500100,long,彩灯 来源: https://www.cnblogs.com/LQS-blog/p/16088704.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。