洛谷P2367 语文成绩(差分)

标准的差分应用题,不要想的太复杂,写成了线段树。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=5e6+10;
 4 int d[N],a[N];//d是差分数组
 5 int n,p,x,y,z,ans=1e9;
 6 int main(){
 7     scanf("%d%d",&n,&p);
 8     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
 9     for(int i=1;i<=n;i++) d[i]=a[i]-a[i-1];
10     for(int i=1;i<=p;i++){
11         scanf("%d%d%d",&x,&y,&z);
12         d[x]+=z;d[y+1]-=z;
13     }
14     for(int i=1;i<=n;i++){
15         a[i]=a[i-1]+d[i];
16         ans=min(ans,a[i]);
17     }
18     cout<<ans;
19 } 

 

posted @ 2022-04-09 17:01  YHXo  阅读(43)  评论(0编辑  收藏  举报