最后一个点mle,求纠错

P2367 语文成绩

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 会了,谢谢


|