zxf1019 @ 2022-03-17 22:33:02
#include<iostream>
using namespace std;
int main(){
int m,n,x,y,z;
cin>>m>>n;
int a[5000001];
int min=101;
for(int i=0;i<m;i++) {
cin>>a[i];//输入最初成绩
}
for(int j=0;j<n;j++){
cin>>x>>y>>z;
for(int i=x-1;i<=y-1;i++){
a[i]=a[i]+z;
}
}
for(int i=0;i<m;i++){
min=a[i]<min?a[i]:min;
}
cout<<min;
return 0;
}
by Qing_fy @ 2022-03-17 22:35:35
请把a[]开在外面。你的程序无法输入是因为爆栈了,开在里面a[]占用栈空间,而栈空间非常有限。但是开在外面就没有影响。
by Micnation_AFO @ 2022-03-17 22:37:01
@zxf1019
by zxf1019 @ 2022-03-17 22:43:45
@Qing_fy 感谢感谢,我去试试。
by zxf1019 @ 2022-03-17 22:45:17
@Leap_hash_jperm 谢谢指正,非常感谢。
by zxf1019 @ 2022-03-17 23:04:30
@Leap_hash_jperm 但是为什么要用差分?求解
by Terrible @ 2022-03-17 23:25:49
不是说必须用差分,只是你的程序的运行效率太拉了,跑不过去,建议你用差分。
实际上可能可以找其他方法不用差分也能完成这道题。
by zxf1019 @ 2022-03-17 23:33:08
嗯,嗯,感谢!
by dingshengyang @ 2022-07-15 15:18:38
@Terrible 线段树