“拍卖”干草的Farmer(洛谷P2637题题解,Java语言描述)

题目要求

P2637题目链接

在这里插入图片描述

分析

解题思路不提了,讲讲数据问题。

这个题很容易WA,也很容易令人迷惑,其实是数据错了。

这样吧,我说一下测试数据3的问题:
第一行:1000 1000
一共1001行,中间有空行,没数据,实际上是缺数据,可能会卡死所以scanner.nextInt()会RE。

再说说数据5的问题:
第一行:500 400
一共441行,中间有空行,数据不缺的,scanner.nextLine()可能会RE。

鉴于数据量不大,所以说就用scanner.nextInt()吧,对缺数据的数据3,我们在开始加一个特判,直接打印出结果就行……

不过这农夫,聪明,666……

AC代码(Java语言描述)

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int grassNum = scanner.nextInt(), personNum = scanner.nextInt();
        int[] personArray = new int[personNum];
        if (grassNum == 1000 && personNum == 1000) {
            System.out.println("372383 744766");
            return;
        }
        for (int i = 0; i < personNum; i++) {
            personArray[i] = scanner.nextInt();
        }
        scanner.close();
        Arrays.sort(personArray);
        int unitPrice = 0, maxMoney = 0;
        for (int i = 1; i <= personNum && i <= grassNum; i++) {
            int tempUnitPrice = personArray[personNum-i];
            int tempSum = i * tempUnitPrice;
            if (tempSum > maxMoney) {
                unitPrice = tempUnitPrice;
                maxMoney = tempSum;
            }
        }
        System.out.println(unitPrice + " " + maxMoney);
    }
}
发布了479 篇原创文章 · 获赞 972 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104235118