PAT(B) 1020 月饼(Java)
题目链接: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;
}
}
版权声明:
- 转载请于首页注明链接形式的PAT(B) 1020 月饼(Java)——wowpH;
- 代码原创,公开引用不能删除首行注释(作者,版本号,时间等信息);
- 如果有疑问欢迎评论留言,尽量解答。
PAT(B) 1020 月饼(Java)的更多相关文章
- PAT乙级 1020. 月饼 (25)(只得到23分)
1020. 月饼 (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 月饼是中国人在中秋佳节时吃的一种传统食 ...
- PAT 乙级 1020 月饼 (25) C++版
1020. 月饼 (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 月饼是中国人在中秋佳节时吃的一种传统食 ...
- PAT 乙级 1020.月饼 C++/Java
题目来源 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部 ...
- PAT Basic 1020 月饼 (25 分)
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样 ...
- PAT 1020 月饼 (25)(精简版代码+思路+推荐测试用例)
1020 月饼 (25)(25 分)提问 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是 ...
- PAT (Basic Level) Practise (中文)-1020. 月饼 (25)
http://www.patest.cn/contests/pat-b-practise/1020 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量. ...
- PAT-乙级-1020. 月饼 (25)
1020. 月饼 (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 月饼是中国人在中秋佳节时吃的一种传统食 ...
- PAT Basic 1020
1020 月饼 (25 分) 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意 ...
- PAT乙级1020
1020 月饼 (25 分) 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. ...
随机推荐
- Jenkins 获取 Git 的提交记录(Change Log)
工作中用 Jenkins 做 iOS 和 Android 的持续集成,之前实现的是当 git 有新代码提交的时候,就会自动编译并上传安装包到蒲公英,然后自动发送QQ群通知或者讨论组通知给相关小伙伴,方 ...
- 【原】Python基础-类
class CPerson: name = "default" __name2 = "inaccessable name" #类作用域内的变量可以被所有实例访问 ...
- Chrome接口调试工具
网页接口测试工具开发背景 在web开发中,服务器端和客户端的开发和测试必不可少,但是测试的工作往往需要服务器端完成之后,客户端才能进行测试,这无疑延后了测试流程,导致服务器端开发完成后,无法进行充分的 ...
- 2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础
实验内容 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS,CSRF).Webgoat实践下相关实验. 实验过程 WebGoat: Webgoat是OWA ...
- 网络爬虫requests-bs4-re-1
最近了解了爬虫,嗯--------,有时候会搞得有点头晕. 跟着线上老师实现了两个实例.可以用python下载源代码玩玩,爬淘宝的很刺激,虽然违反了ROBOTS协议. GIT地址
- DIOCP任务队列和工作线程
DIOCP任务队列和工作线程 涉及4个单元文件:utils_strings.pas,utils_queues.pas,utils_queueTask.pas,utils_grouptask.pas. ...
- oracle主键修改级联外键
举例:修改te_rygj_menu这张表的主键menu_id时,te_rygj_usermenu中的menu_id也跟着修改.利用触发器trigger实现: create or replace tri ...
- 初识kaggle,以及记录 kaggle的使用
1.简介:Kaggle是一个数据建模和数据分析竞赛的平台.企业和研究者可在其上发布数据,统计学者和数据挖掘专家可在其上进行竞赛,通过“众包”的形式以产生最好的模型.Kaggle可以分为Competit ...
- vue-resource在vuecli3中请求headers修改
this.$resource.delete({ user_code: Cookie.get("empid"), date: date, file_name: file_name } ...
- es6语法中的arrow function=>
(x) => x + 相当于 function(x){ ; }; var ids = this.sels.map(item => item.id).join() var ids = thi ...