1020 月饼

一、题目

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

注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 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

输出样例

94.50

四、题目分析

如果要获得最大收益,首先按照单价排序,根据贪心策略,从单价最高的售卖,直到满足需求。需要注意库存小于需求的情况。

五、代码

#include <bits/stdc++.h>
using namespace std;
struct noon_cake
{double num;double price;double aver;
};
bool cmp(noon_cake a, noon_cake b)
{return a.aver > b.aver;
}
int main()
{int n;int need;double sum = 0;cin >> n >> need;noon_cake *cakes = new noon_cake[n];for (int i = 0; i < n; i++)cin >> cakes[i].num;for (int i = 0; i < n; i++){cin >> cakes[i].price;cakes[i].aver = cakes[i].price * 1.0 / cakes[i].num;}sort(cakes, cakes + n, cmp);for (int i = 0; need && i < n; i++){if (need >= cakes[i].num){need -= cakes[i].num;sum += cakes[i].price;}else{sum += cakes[i].aver * need;need = 0;}}printf("%.2lf", sum);return 0;
}

PAT (Basic Level) Practice1020 月饼相关推荐

  1. 【题解】PAT (Basic Level) Practice (中文)

    互联网行业的小白,写博客的目的是为了记录自己的学习过程.对自己学习中所犯的错误做一个总结.由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教! PAT Basic Level P ...

  2. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  3. PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)

    PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)  http://www.patest.cn/contests/pat-b-practise/1034 ...

  4. PAT basic level 答案+解题思路+难点 (个人刷题记录)

    PAT basic level 使用语言:C++ 仅记录一下自己刷题过程的心得体会 永远保持更新(期待更好的解法) 可能有些题没有(那就是我还没做出来,以后会更的!) 欢迎大家与我讨论交流√ 题目序列 ...

  5. 可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决)

    可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决) c1, c2 = map(int,input().split( ...

  6. 1001 害死人不偿命的(3n+1)猜想 (15分) PAT (Basic Level) Practice (中文)C语言版

    PAT (Basic Level) Practice (中文) 1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一 ...

  7. 卡拉兹(Callatz)猜想,PAT(Basic Level) Practise NO.1001

    PAT(Basic Level) Practise NO.1001 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半. 这样 ...

  8. PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分)

    PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即T代表顶级:A代表甲级:B代表乙级: 第 ...

  9. PAT (Basic Level) Practice (中文)1058 选择题 (20 分)

    PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 文章目录 PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 题 ...

最新文章

  1. Android开发返回拍摄的图片
  2. Apache Common常用jar包
  3. 基于android的lbs技术,基于Android的LBS应用研究
  4. CentOs简单分区方案
  5. leetcode 274, 275. H-Index I, II(H 指数问题合集,线性查找/二分查找)
  6. JavaSE中Map框架学习笔记
  7. 有关emoji表情以及utf-16编码
  8. [Luogu] 模板题-最近公共祖先
  9. 机器人教练走进驾校_“机器人教练”走进镇江驾校
  10. ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程
  11. 网络安全中的数据挖掘技术(一)
  12. java实现中文大写金额转小写数字
  13. 跨境转运常用运费计算方式
  14. 51单片机c语言定义寄存器r,在MCS51单片机中对特殊功能寄存器的C51定义
  15. 蓝牙耳机品牌排行榜,连接稳定的四款蓝牙耳机分享
  16. 漫谈国内外Android生态:华为发布的 HMS 服务,对 Mate30 系列无法搭载 Google GMS 的补偿有多大(本人原创)
  17. Placing Lampposts
  18. 民间祖传秘方 (转载)
  19. 阿里云短信业务SMS
  20. @Transactional注解回滚(事物)

热门文章

  1. Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same(解决)
  2. shedlock 重启系统报错问题_闲谈ShedLock解决分布式定时任务重复执行问题
  3. vivado dds IP核笔记
  4. mapbox 加载json数据 和数据中颜色 和高度 并根据数值加载颜色
  5. python创建和删除文件有什么区别_python创建与删除临时文件夹的例子
  6. python中np没有定义_第六篇:python中numpy.zeros(np.zeros)的使用方法
  7. python排课问题_教育机构如何解决排课问题?
  8. 计算机函数填写评价,信息技术应用 用计算机画函数图象教学评价实录
  9. feign返回结果统一处理_SpringCloud异常处理统一封装我来做-使用篇
  10. html设计一个图片墙,html5 绘制类似墙型的背景