给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。

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

结尾无空行

思路:求最优解,那么考的是考的是贪心算法,具体思路见柳婼题解就可以了,说的很详细。

两个点:

vector用sort函数之后cmp函数的写法,<>里面是什么,cmp函数的参数就是什么;

测试点2是题目中的“正数”,没说是“正整数”,所以有可能是小数。我的代码中,把所有的数据全用float表示才过了。

#include<iostream>
#include<iomanip>
#include<vector>
#include<set>
#include<list>
#include<deque>
#include<stack>
#include<unordered_map>
#include<cctype>
#include<map>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
class Mooncake
{
public:float store,single;int total;void setsingle() { single = (float)total / store; }
};
int cmp(class Mooncake v1, class Mooncake v2){  return v1.single > v2.single;}
int main()
{int n;float d,profit = 0.0;//float tstore = 0.0;cin >> n >> d;vector<Mooncake> v(n);for (int i = 0; i < n; i++){cin >> v[i].store;//tstore += v[i].store;}for (int i = 0; i < n; i++)cin >> v[i].total;for (int i = 0; i < n; i++)v[i].setsingle();sort(v.begin(), v.end(), cmp);//if (tstore < d)//{// for (int i = 0; i < n; i++)// {//     profit += v[i].single * v[i].store;// }// printf("%.2f", profit);// return 0;//}if (d <= v[0].store){profit = d * v[0].single;printf("%.2f", profit);return 0;}else{int i = 0;while (d>=v[i].store && i<v.size()){profit += v[i].store * v[i].single;d -= (float)v[i].store;i++;}profit += v[i].single * d;printf("%.2f", profit);}return 0;
}

PAT乙级 1020 月饼相关推荐

  1. pat 乙级 1020 月饼(C++实现)

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

  2. PAT 乙级 1020  月饼

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

  3. [PAT乙级]1020 月饼

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

  4. PAT乙级(1020 月饼)

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

  5. C++学习之路 | PTA乙级—— 1020 月饼 (25分)(精简)

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

  6. pat 乙级 1020 吃月饼(25)

    总结一下 :(因为涉及到 小数计算 所以 类型 我选择了double) 第一次 提交 :测试点3 无论如何都过不去 . 最后 发现 忽略 两种情况 : 第一 :  所有 库存都满足 不了需求 比如  ...

  7. PAT乙级——1010.月饼

    时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味 ...

  8. C++学习之路 | PTA乙级—— 1020 月饼 (25分)(带注释)(精简)

    1024 科学计数法 (20分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部 ...

  9. PAT乙级题目索引(题目+解析+AC代码)

    题目信息 分值 PAT 乙级 1001 害死人不偿命的(3n+1)猜想 15 PAT 乙级 1002 写出这个数 20 PAT 乙级 1003 我要通过! 20 PAT 乙级 1004 成绩排名 20 ...

最新文章

  1. Aix /etc/hosts.equiv 文件的用途及用法
  2. iptables利用ipt_recent做防刷限制
  3. python- is和id
  4. Nacos笔记-对Nacos初步认识
  5. 在后台中高效工作 – 后台任务
  6. git 如何忽略掉文件夹_#PY小贴士# 我的git仓库为什么每次提交都有很多改动?
  7. 201521123061 《Java程序设计》第六周学习总结
  8. 【XML】我所知道的XML
  9. SQL注入学习part07:(SQL注入语句总结)
  10. VB6的后期绑定和前期绑定
  11. linux的functions之killproc函数详解
  12. python报表自动化系列 - 获得指定目录下所有文件名
  13. 微信机器人 DIY 从 0 到 1
  14. ros使用RPLIDAR激光雷达
  15. 戴尔t310服务器装系统步骤,dell笔记本重装系统教程
  16. 如何搭建远程访问服务器?外网访问数据库实操教程
  17. python多项式求导_OO博客作业1:多项式求导作业总结
  18. Excel中序号自动填充
  19. 机器学习实战(三)朴素贝叶斯 (Peter Harrington著)
  20. php计算股票均线,均线怎么算?均线的计算方法详解

热门文章

  1. String、StringBuilder、Math、System基本知识总结
  2. mysql参数之innodb_buffer_pool_size大小设置
  3. [转载]手工安全测试方法修改建议
  4. 自动化安装DHCP配置脚本
  5. CSS div 塌陷问题
  6. dskinlite自适应dpi
  7. 网站缓存技术总结( ehcache、memcache、redis对比)
  8. web开发中不同设备浏览器的区分
  9. Linux串口接收不到0X11数据
  10. swfupload使用说明