题目链接:1020 月饼 (25 point(s))
分析
  • 月饼(库存量,总售价,单价)封装成MoonCake
  • Scanner会超时,用BufferedReader类读取数据
    • 读取的时候用字符串数组保存,见input()方法
  • 将读取的字符串转成int型和double型,见transform()方法
  • 自定义MyComparator类实现Comparator接口,将月饼按照单价降序排序
  • 顺序卖出月饼,直到满足最大需求量或者所有月饼全部卖出,即可得到最大收益
代码
/**
* Score 25
* Run Time 119ms
* @author wowpH
* @version 2.2
*/ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator; public class Main {
private int n, d; // 月饼种类,最大需求量
private MoonCake[] moon; // 月饼 // n和d,月饼库存量,月饼总售价
private String[] nd, stock, price; public Main() {
input(); // 输入
transform(); // 转换
MyComparator c = new MyComparator();
Arrays.sort(moon, c); // 排序 double sum = 0; // 最大收益
int i = 0;
while (i < n && d > 0) {
if (d < moon[i].stock) {
sum += d * moon[i].utilPrice;// 第i种月饼卖出d万吨
} else {
sum += moon[i].totalPrice; // 第i种月饼全部卖完
}
d -= moon[i].stock; // 市场的剩余需求量
i++;
} System.out.printf("%.2f\n", sum); // 输出最大收益
} // 输入
private void input() {
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(ir);
try {
nd = br.readLine().split(" ");
stock = br.readLine().split(" ");
price = br.readLine().split(" ");
br.close();
} catch (IOException e) {
System.out.println("输入错误!");
}
} // 将字符串数组类型的数据转换成int型和double型
private void transform() {
n = Integer.parseInt(nd[0]);
d = Integer.parseInt(nd[1]); moon = new MoonCake[n];
for (int i = 0; i < n; i++) {
moon[i] = new MoonCake();
moon[i].stock = Double.parseDouble(stock[i]);
moon[i].totalPrice = Double.parseDouble(price[i]);
moon[i].utilPrice = moon[i].totalPrice / moon[i].stock;
}
} public static void main(String[] args) {
new Main();
}
} final class MoonCake {
public double stock;// 库存量
public double totalPrice;// 总售价
public double utilPrice;// 单价
} final class MyComparator implements Comparator<MoonCake> {
// 单价降序排序
@Override
public int compare(MoonCake o1, MoonCake o2) {
if (o1.utilPrice < o2.utilPrice) {
return 1;
} else if (o1.utilPrice > o2.utilPrice) {
return -1;
}
return 0;
}
}

版权声明:

  1. 转载请于首页注明链接形式的PAT(B) 1020 月饼(Java)——wowpH
  2. 代码原创,公开引用不能删除首行注释(作者,版本号,时间等信息);
  3. 如果有疑问欢迎评论留言,尽量解答。

PAT(B) 1020 月饼(Java)的更多相关文章

  1. PAT乙级 1020. 月饼 (25)(只得到23分)

    1020. 月饼 (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 月饼是中国人在中秋佳节时吃的一种传统食 ...

  2. PAT 乙级 1020 月饼 (25) C++版

    1020. 月饼 (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 月饼是中国人在中秋佳节时吃的一种传统食 ...

  3. PAT 乙级 1020.月饼 C++/Java

    题目来源 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部 ...

  4. PAT Basic 1020 月饼 (25 分)

    月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样 ...

  5. PAT 1020 月饼 (25)(精简版代码+思路+推荐测试用例)

    1020 月饼 (25)(25 分)提问 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是 ...

  6. PAT (Basic Level) Practise (中文)-1020. 月饼 (25)

    http://www.patest.cn/contests/pat-b-practise/1020 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量. ...

  7. PAT-乙级-1020. 月饼 (25)

    1020. 月饼 (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 月饼是中国人在中秋佳节时吃的一种传统食 ...

  8. PAT Basic 1020

    1020 月饼 (25 分) 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意 ...

  9. PAT乙级1020

    1020 月饼 (25 分)   月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. ...

随机推荐

  1. Jenkins 获取 Git 的提交记录(Change Log)

    工作中用 Jenkins 做 iOS 和 Android 的持续集成,之前实现的是当 git 有新代码提交的时候,就会自动编译并上传安装包到蒲公英,然后自动发送QQ群通知或者讨论组通知给相关小伙伴,方 ...

  2. 【原】Python基础-类

    class CPerson: name = "default" __name2 = "inaccessable name" #类作用域内的变量可以被所有实例访问 ...

  3. Chrome接口调试工具

    网页接口测试工具开发背景 在web开发中,服务器端和客户端的开发和测试必不可少,但是测试的工作往往需要服务器端完成之后,客户端才能进行测试,这无疑延后了测试流程,导致服务器端开发完成后,无法进行充分的 ...

  4. 2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础

    实验内容 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS,CSRF).Webgoat实践下相关实验. 实验过程 WebGoat: Webgoat是OWA ...

  5. 网络爬虫requests-bs4-re-1

    最近了解了爬虫,嗯--------,有时候会搞得有点头晕. 跟着线上老师实现了两个实例.可以用python下载源代码玩玩,爬淘宝的很刺激,虽然违反了ROBOTS协议. GIT地址

  6. DIOCP任务队列和工作线程

    DIOCP任务队列和工作线程 涉及4个单元文件:utils_strings.pas,utils_queues.pas,utils_queueTask.pas,utils_grouptask.pas. ...

  7. oracle主键修改级联外键

    举例:修改te_rygj_menu这张表的主键menu_id时,te_rygj_usermenu中的menu_id也跟着修改.利用触发器trigger实现: create or replace tri ...

  8. 初识kaggle,以及记录 kaggle的使用

    1.简介:Kaggle是一个数据建模和数据分析竞赛的平台.企业和研究者可在其上发布数据,统计学者和数据挖掘专家可在其上进行竞赛,通过“众包”的形式以产生最好的模型.Kaggle可以分为Competit ...

  9. vue-resource在vuecli3中请求headers修改

    this.$resource.delete({ user_code: Cookie.get("empid"), date: date, file_name: file_name } ...

  10. es6语法中的arrow function=>

    (x) => x + 相当于 function(x){ ; }; var ids = this.sels.map(item => item.id).join() var ids = thi ...