PAT 乙级 1020.月饼 C++/Java
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。
注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 94.5(亿元)。
输入格式:
每个输入包含一个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N 表示月饼的种类数、以及不超过 500(以万吨为单位)的正整数 D 表示市场最大需求量。随后一行给出 N 个正数表示每种月饼的库存量(以万吨为单位);最后一行给出 N 个正数表示每种月饼的总售价(以亿元为单位)。数字间以空格分隔。
输出格式:
对每组测试用例,在一行中输出最大收益,以亿元为单位并精确到小数点后 2 位。
输入样例:
3 20
18 15 10
75 72 45
分析:
这道题要求的是最大收益,给出月饼的种类和市场需求量,再给出它们的库存和总售价。
首先求出不同月饼的单价,先计算单价最高的月饼(假定A的单价最大)
用一个结构体保存月饼的信息:月饼库存,总售价,单价
按照单价高低对月饼信息进行排序,得到单价最高的月饼
情况1:A类月饼总库存 > 市场最大需求量N,则最大收益 = A的单价 * 市场最大需求量
情况2:A类月饼库存 < 市场最大需求量, 则A的收益 = A的单价 * 市场最大需求量
新的市场最大需求 = 市场最大需求量 减去 A的库存
然后再从单价第二大的计算收益,
最大收益 = 所有月饼收益
注意:库存用double类型,用int的话测试点2过不去
C++实现:
#include <iostream>
#include <algorithm>
#include <string>
#include <cctype>
#include <vector>
#include <stack>
#include <climits>
#include <cstdio>
#include <numeric>
using namespace std; typedef struct MoonCake {
double store; //月饼库存
double sell; //总售价
double unitPrice; //单价
}MoonCake; bool myCmp(MoonCake a, MoonCake b)
{
return a.unitPrice > b.unitPrice;
} int main()
{
int N; //月饼种类数
double D; //市场最大需求量
double result = ;
cin >> N >> D;
vector<MoonCake> vecMoon(N);
for (int i = ; i < N; ++i)
{
cin >> vecMoon[i].store;
}
for (int i = ; i < N; ++i)
{
cin >> vecMoon[i].sell;
vecMoon[i].unitPrice = vecMoon[i].sell / vecMoon[i].store;
}
//按照单价高低排序
sort(vecMoon.begin(), vecMoon.end(), myCmp);
for (int i = ; i < N; ++i)
{
if (vecMoon[i].store <= D)
{
//该种类月饼的库存小于市场最大需求
result = result + vecMoon[i].sell;
}
else
{
//库存大于市场需求
result = result + vecMoon[i].unitPrice * D;
break;
}
D = D - vecMoon[i].store;
}
printf("%0.2lf", result);
return ;
}
Java实现:
PAT 乙级 1020.月饼 C++/Java的更多相关文章
- PAT(B) 1020 月饼(Java)
题目链接:1020 月饼 (25 point(s)) 分析 将月饼(库存量,总售价,单价)封装成MoonCake类 Scanner会超时,用BufferedReader类读取数据 读取的时候用字符串数 ...
- 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
1020 月饼 (25 分) 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. ...
- PAT乙级 1001(C)+1054(Java)
准备一天两道题,就这样吧,先从水题开始. 1001.点击查看 分析:看懂题就应该写出来了,注意边界与0情况的处理. #include<stdio.h> #include<math.h ...
- PAT 乙级 1071.小赌怡情 C++/Java
题目来源 常言道“小赌怡情”.这是一个很简单的小游戏:首先由计算机给出第一个整数:然后玩家下注赌第二个整数将会比第一个数大还是小:玩家下注 t 个筹码后,计算机给出第二个数.若玩家猜对了,则系统奖励玩 ...
- PAT Basic 1020 月饼 (25 分)
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样 ...
- PAT乙级:1092 最好吃的月饼 (20分)
PAT乙级:1092 最好吃的月饼 (20分) 题干 月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种. 若想评比出一种"最好吃"的月饼,那势必在吃货界引发一场腥风 ...
- PAT 1020 月饼 (25)(精简版代码+思路+推荐测试用例)
1020 月饼 (25)(25 分)提问 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是 ...
随机推荐
- vue子组件如何向父组件传值
子组件: <template> <div class="app"> <input @click="sendMsg" type=&q ...
- “/usr/local/lib/libosipparser2.so.7: could not read symbols: Invalid operation” 异常解决
编译c代码报错如下 /usr/bin/ld: /tmp/ccl8nBND.o: undefined reference to symbol 'osip_message_get_body' /usr/b ...
- gcc 在c代码中内嵌汇编调用c函数: 只是证明曾经我来过
我怕我不写下来,将来我都不记得我还在 c 中嵌套过汇编语言,用汇编代码调用一个c函数的过程. 折腾了一下午,在网上查看相关的资料,然后照葫芦画瓢地在c代码中嵌套汇编,希望解决我所遇到的问题,可最后发现 ...
- EmotiW 历年竞赛冠军数据及论文信息
date Baseline paper Champion paper Model & Feature Test_acc 2013 [1] [2] EmoNets 41.03 2014 [3] ...
- 记录ssis的两个异常解决办法
1.Foreach文件枚举提示变量为空的解决办法:把foreach属性窗口中的DelayValidation设置为True就可以了 2.csv导入数据库提示:无法在 unicode 和非 unicod ...
- 利用docker实现私有镜像仓库
利用docker实现私有镜像仓库 在linux服务器上安装了docker过后,可以拉取docker镜像仓库: docker pull registry 再执行命令让镜像run起来: docker ru ...
- RPC协议
什么是 RPC? 初步印象 RPC的语义是远程过程调用,在一般的印象中,就是将一个服务调用封装在一个本地方法中,让调用者像使用本地方法一样调用服务.而具体的实现是通过调用方和服务方各自的stub基于T ...
- 阿里云配置DDoS高防
- 深入理解 Linux Cgroup 系列(一):基本概念
原文链接:深入理解 Linux Cgroup 系列(一):基本概念 Cgroup 是 Linux kernel 的一项功能:它是在一个系统中运行的层级制进程组,你可对其进行资源分配(如 CPU 时间. ...
- ajax 执行成功以后返回的数据走的是error方法而不是success方法的问题
今天在一个功能的时候发现写的ajax的方法执行后台代码成功后返回前台时执行的是error方法而不是success方法,代码如下 jQuery('#form').ajaxSubmit({ type: & ...