Mr_xiao @ 2023-02-28 16:52:09
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int l;
static int r;
static int add;
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//接收数据
//经典差分方法解决的题目
String sor[]=reader.readLine().split(" ");
String str[]=reader.readLine().split(" ");//学生成绩
//得到原数组
int a[]=new int[str.length+1];
int b[]=new int[str.length+1];
for (int i = 1; i < str.length+1 ; i++) {
a[i]=Integer.parseInt(str[i-1]);
b[i]=a[i]-a[i-1];
}
for (int i = 0; i < Integer.parseInt(sor[1]); i++) {
String s[]=reader.readLine().split(" ");
l=Integer.parseInt(s[0]);
r=Integer.parseInt(s[1]);
add=Integer.parseInt(s[2]);
b[l]+=add;
if (r==b.length-1){
//假设加到的是最后一个数,那么它对于后面的数没有影响那么就不用执行else操作
}else {
b[r+1]-=add;
}
}
reader.close();
//再求前缀和就是最终分数
int maxnum=b[1];
for (int i = 1; i <b.length ; i++) {
b[i]=b[i]+b[i-1];
if (b[1]>b[i]){
maxnum=b[i];
}
}
System.out.println(maxnum);
}
}
by Mr_xiao @ 2023-02-28 17:36:32
@KKKZOZ 呼叫大佬
by KKKZOZ @ 2023-02-28 17:47:18
String sor[]=reader.readLine().split(" ");
String str[]=reader.readLine().split(" ");//学生成绩
这样读的话,这两个String类型的数组占了很大空间
建议像我那样包装一个nextInt()
的方法
by Mr_xiao @ 2023-02-28 17:59:18
@KKKZOZ 好,我看看
by Mr_xiao @ 2023-02-28 19:16:50
@KKKZOZ 会了,谢谢