qiao_li_pa @ 2023-10-11 20:49:47
#include<bits/stdc++.h>
using namespace std;
int *grades,*delta;
int n,t,temp,start,ended,p;
int main(){
//本题中delta为差分数组,grades储存原始成绩
//
cin>>n>>t;
grades=new int[n];
delta=new int[n];
for(int i=1;i<=n;i++){
cin>>temp;
grades[i]=temp;
}//初始化成绩数据
for(int i=0;i<t;i++){
cin>>start>>ended>>p;
delta[start]=p;
if(ended+1<=n)delta[ended]=p*(-1);
}//确定差分数组
int add=0;
int minx=100000000;
for(int i=1;i<=n;i++){
add+=delta[i];
minx=min(minx,grades[i]+add);
}//比较,找最小值
cout<<minx;//打印结果
}
代码如上,带注释,还望各位能帮忙找一找问题,感谢。
by yuxiaohe @ 2023-10-14 09:55:39
第二个循环里对差分数组的赋值改为+=。
by qiao_li_pa @ 2023-10-17 19:45:08
@yuxiaohe 改了之后提交为80分