1070 Mooncake (25)(25 分)

Mooncake is a Chinese bakery product traditionally eaten during the Mid-Autumn Festival. Many types of fillings and crusts can be found in traditional mooncakes according to the region's culture. Now given the inventory amounts and the prices of all kinds of the mooncakes, together with the maximum total demand of the market, you are supposed to tell the maximum profit that can be made.

Note: partial inventory storage can be taken. The sample shows the following situation: given three kinds of mooncakes with inventory amounts being 180, 150, and 100 thousand tons, and the prices being 7.5, 7.2, and 4.5 billion yuans. If the market demand can be at most 200 thousand tons, the best we can do is to sell 150 thousand tons of the second kind of mooncake, and 50 thousand tons of the third kind. Hence the total profit is 7.2 + 4.5/2 = 9.45 (billion yuans).

Input Specification:

Each input file contains one test case. For each case, the first line contains 2 positive integers N (<=1000), the number of different kinds of mooncakes, and D (<=500 thousand tons), the maximum total demand of the market. Then the second line gives the positive inventory amounts (in thousand tons), and the third line gives the positive prices (in billion yuans) of N kinds of mooncakes. All the numbers in a line are separated by a space.

Output Specification:

For each test case, print the maximum profit (in billion yuans) in one line, accurate up to 2 decimal places.

Sample Input:

3 200
180 150 100
7.5 7.2 4.5

Sample Output:

9.45

题目大意:给出月饼的需求量,并且给出每种月饼的总量及其总价格,要求按需求给出最大利润。

代码来自:https://www.liuchuo.net/archives/1912

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct mooncake{
float mount, price, unit;
};
int cmp(mooncake a, mooncake b) {
return a.unit > b.unit;
}
int main() {
int n, need;
cin >> n >> need;
vector<mooncake> a(n);//定义大小为n的向量
for (int i = ; i < n; i++)
cin >> a[i].mount;
for (int i = ; i < n; i++)
cin >> a[i].price;
for (int i = ; i < n; i++)
a[i].unit = a[i].price / a[i].mount;//计算单位价格
sort(a.begin(), a.end(), cmp);//按照单价进行排序。
float result = 0.0;
for (int i = ; i < n; i++) {
if (a[i].mount <= need) {
result = result + a[i].price;
} else {
result = result + a[i].unit * need;
break;
}
need = need - a[i].mount;
}
printf("%.2f",result);
return ;
}

//不是贪心问题啊,就是一个普通的题目,对单位进行排序。 不要被贪心吓到了啊。

最新文章

  1. hdu分类 Dynamic Programming(这是一场漫长的旅途)
  2. 【JS】falsy与truthy
  3. (转载)XML解析之-XStream解析
  4. 矩形的个数-nyoj206
  5. Word2010撤销按钮失效,Ctrl+Z失效解决办法
  6. HTML+CSS学习总结:
  7. C++ Primer 学习笔记_69_面向对象编程 --继承情况下的类作用域
  8. JavaScript之Style属性学习
  9. MapReduce深度分析(一)
  10. DirectFB 之 实例图像不断右移
  11. 乐视开放平台技术架构-servlet和spring mvc篇
  12. LoadRunner11_录制Oracle数据库脚本
  13. hdu1061(2015-N1):1.快速幂;2.找规律
  14. 自定义WIZ文档模板
  15. python命令行参数解析模块argparse和docopt
  16. [nodejs] nodejs开发个人博客(七)后台登陆
  17. uv-pv-vv的区别
  18. 洛谷3705 [SDOI2017] 新生舞会 【01分数规划】【KM算法】
  19. 第三节《Git重置》
  20. 《Linux内核设计与实现》第四章读书笔记

热门文章

  1. 非IMU模式下DML语句产生的REDO日志内容格式解读
  2. Esper学习之一:Esper介绍
  3. Ajax技术(WEB无刷新提交数据)
  4. spring整合websocket通信
  5. sencha touch list css(样式) 详解
  6. JVM工具jinfo实践
  7. Android - 安装应用(APP) 不显示图标
  8. 【C#】浏览器源代码
  9. spark 将dataframe数据写入Hive分区表
  10. linux 系统信息查看