题目链接: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. GitLab安装及备份迁移数据

    centos7安装GitLab 下载相应版本rpm包 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 我此处下载9.3.6版本. # w ...

  2. Leetcode题目437:路径总和III(递归-简单)

    题目描述: 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二 ...

  3. EXCEL技巧-多级目录设置

    现有如下图所示的数据,要求:以方法.厚度.品种进行分类汇总,并对数量.面积.金额求和. 在进行分类汇总前需要先对数据进行排序,操作如下图所示. 在排序对话框中,点击“添加条件” 两次,这样可以对三个字 ...

  4. 使用HttpClient调用WebAPI接口,含WebAPI端示例

    API端: using log4net; using System; using System.Collections.Generic; using System.IO; using System.L ...

  5. android: View, SurfaceView, GLSurfaceView, TextureView 区别与联系

    区别与联系 View: 显示视图,内置画布,提供了图形绘制函数.触屏事件.按键事件函数等,必须在UI主线程内更新画面,速度较慢: SurfaceView: 基于view视图进行拓展的视图类,更适合2D ...

  6. Angular 中的数据交互(get jsonp post)

    一.Angular get 请求数据 Angular5.x 以后 get.post 和和服务器交互使用的是 HttpClientModule 模块. 1.在 app.module.ts 中引入 并注入 ...

  7. C/C++程序所占用内存区域

    C/C++编译的程序所占用内存区域一般分为以下5个部分: 栈区(stack):由编译器自动分配和释放,用来存放函数的参数.局部变量等.其操作方式类似于数据结构中的栈. 堆区(heap):一般由程序员分 ...

  8. fetch jsonp请求接口

    function loadTbbRec() { var fetchJsonp = require('fetch-jsonp'); fetchJsonp(ext.info.tbbRecUrl, { he ...

  9. react中如何处理日期格式整理

    1.第一种模式——对应组件:DatePicker: 需要引入 import moment from "moment"; values.cfjdrq = moment(values. ...

  10. 【c# 学习笔记】封装

    封装 指的是把类内部的数据隐藏起来,不让对象实例直接对其操作.c#中提供了属性机制来对类内部的状态进行操作. 在c#中,封装可以通过Public.Private.Protected和Internal等 ...