就第一个过了,其他都是WA,我测试的都没啥问题啊
查看原帖
就第一个过了,其他都是WA,我测试的都没啥问题啊
661555
Aogu181楼主2022/3/23 17:48
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] g = new int[n + 10];//奶重
        int[] d = new int[n + 10];//截止时间
        int maxTime = -99999;
        int minTime = 99999;
        int maxValue = 0;
        for (int i = 1; i <= n; i++) {
            g[i] = in.nextInt();
            d[i] = in.nextInt();
            maxTime = Math.max(maxTime, d[i]);
            minTime = Math.min(minTime, d[i]);
        }
        //每次选择时间最少且奶量最多的就行 --》最后总奶量一定是最大的
        //按时间排序,时间相同的将奶重的放前面
        //冒泡排序 o(n^2)
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n - i; j++) {
                if (d[j] > d[j + 1]) {
                    int t = d[j];
                    d[j] = d[j + 1];
                    d[j + 1] = t;
                    t = g[j];
                    g[j] = g[j + 1];
                    g[j + 1] = t;
                } else if (d[j] == d[j + 1]) {
                    if (g[j] < g[j + 1]) {
                        int t = g[j];
                        g[j] = g[j + 1];
                        g[j + 1] = t;
                    }
                }
            }
        }
        int i = 1;
        int currTime = 0;
        //从第一秒开始
        while (currTime < maxTime) {
            if (currTime < d[i]) {
                currTime = d[i];
                maxValue += g[i];
                i++;
            } else {
                i++;
            }
        }
        System.out.println(maxValue);
    }
}
2022/3/23 17:48
加载中...