泥豪!我是2789617221guo!欢迎来到我的|

2789617221guo

园龄:1个月粉丝:2关注:2

2025-02-09 16:31阅读: 7评论: 0推荐: 0

洛谷 P2367 语文成绩 题解

P2367 语文成绩 题解

题目

题目传送门

题解

思路

这题是一道经典的差分题。

使用一个数组\(c\)表示\(a\)的差分数组,\(c_i=a_i-a_{i-1}\)。当要修改第\(x\)\(y\)同学的成绩时,只需要在\(c\)中的\(c_{x}+z\)\(c_{y+1}-z\)就可以了。

由于差分数组的前缀和与原数组相同,我们修改\(c\)的区间起始两项时,就相当于对\(x\sim y\)进行修改了。

最后对\(c\)进行前缀和再输出就可以了。

代码

#include<bits/stdc++.h>
#define endl '\n'
#define INF 0x7fffffff
#define EPS 1e-8
using namespace std;
int n,p,a[5000005],c[5000005];
int main(){
cin>>n>>p;
for(int i=1;i<=n;i++) {
cin>>a[i];
c[i]=a[i]-a[i-1];
}
while(p--){
int l,r,s;
cin>>l>>r>>s;
c[l]+=s;
c[r+1]-=s;
}
int mn=INT_MAX;
for(int i=1;i<=n;i++){
c[i]+=c[i-1];
mn=min(mn,c[i]);
}
cout<<mn<<endl;
return 0;
}

本文作者:2789617221guo

本文链接:https://www.cnblogs.com/2789617221guo/p/18706262

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   2789617221guo  阅读(7)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起