题目链接: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. 如果有疑问欢迎评论留言,尽量解答。

最新文章

  1. MyBatis学习(三)
  2. (转载)Linux如何编译安装源码包软件
  3. 使用SqlLocalDB命令行管理LocalDB
  4. Oracle Merge备忘示例
  5. 在Eclipse中生成接口的JUnit测试类
  6. oracle数据库高级应用之《自动生成指定表的insert,update,delete语句》
  7. vagrant系列教程(三):vagrant搭建的php7环境(转)
  8. NSInvocation
  9. 如何写出无法维护的代码(JAVA版)
  10. (基础篇) php中0与空 Null false的区别
  11. RecyclerView(6)自定义RecyclerView.LayoutManager
  12. git常用命令速查
  13. hadoop部署
  14. ClickHouse之clickhouse-local
  15. Centos 7 关闭selinux and firewall
  16. C# 图像处理:将图像(24位真彩)转为 8位灰度图像 采用了内存法,大大提高了效率
  17. J-Link调试查看变量值总是显示&lt;not in scope&gt; 和&lt;cannot evaluate&gt;问题
  18. Caffe常用层参数介绍
  19. 5句mysql语句
  20. 〖Android〗联想K860 logcat CM11.0出错信息及解决

热门文章

  1. Tkinter 之Scale滑块标签
  2. HNOI2009有趣的数列
  3. Hibernate 生成策略和缓存策略
  4. 阿里云服务器发送邮件:Connection could not be established with host smtp.qq.com [Connection timed out #110]
  5. 【Maven】为什么Maven dependencies有的jar包显示为灰色?
  6. 关于form与表单提交操作的一切
  7. ASP如何将table导出EXCEL表格
  8. 23 Flutter官方推荐的状态管理库provider的使用
  9. 一秒 解决 ERROR 1044 (42000): Access denied for user &#39;&#39;@&#39;localhost&#39; to database &#39;mysql 问题
  10. UIScrollView实现自动循环滚动广告