混合牛奶 | 贪心算法 (USACO练习题)
创始人
2024-03-14 06:02:05
0

一、混合牛奶 (USACO练习题)

【问题描述】

牛奶包装是一个如此低利润的生意,以至于尽可能低地控制初级产品(牛奶)的价格变得十分重要。请帮助Merry的牛奶制造公司(Merry Milk Makers')以尽可能最廉价的方式取得他们所需的牛奶。Merry的牛奶制造公司从一些农民那购买牛奶,每个农民卖给牛奶制造公司的价格不一定相同。而且,如一只母牛一天只能生产一定量的牛奶,农民每一天只有一定量的牛奶可以卖。每天,Merry的牛奶制造公司从每个农民那购买一定量的牛奶,少于或等于农民所能提供的最大值。现给出Merry牛奶制造公司的每日的牛奶需求,连同每个农民的可提供的牛奶量和每加仑的价格,请计算Merry的牛奶制造公司所要付出钱的最小值。

注意:每天农民生产的牛奶的总数对Merry的牛奶制造公司来说是足够的。

【输入格式】

第 1 行:二个整数, N 和 M。

第一个数值N(0<= N<=2,000,000)是Marry的牛奶制造公司的一天需要牛奶的数量。

第二个数值,M,(0<= M<=5,000)是提供牛奶的农民个数。

第 2 到 M+1 行:每行二个整数,Pi 和 Ai。Pi(0<= Pi<=1,000) 是农民 i 的牛奶的价格;Ai(0 <= Ai <= 2,000,000)是农民i一天能卖给Marry的牛奶制造公司的牛奶数量。

【输出格式】

单独的一行包含单独的一个整数,表示Marry的牛奶制造公司拿到所需的牛奶所要的最小费用。

【样例输入】       【样例输出】

100 5               630

5 20

9 40

3 10

8 80

6 30

【分析】这是一道大水题 >_<

若要付钱最少,那找卖的最便宜的就好啦~对农民的出售价格进行排序,就没然后了.

【代码】

 1 #include 
 2 #include 
 3 #include 
 4  
 5  struct Node {
 6         int money, can_give;
 7        Node( int x,  int y) : money(x), can_give(y) {}
 8 };
 9  
10 std::vector nodes;
11  
12  bool cmp( const Node& a,  const Node& b) {
13         return a.money < b.money;
14 }
15  int main() {
16         int n, m, min_use =  0;  // n: needs; m: the number of farmers
17         scanf( " %d %d ", &n, &m);
18         for( int i =  0, x, y; i < m; i++) {
19               scanf( " %d %d ", &x, &y);
20               nodes.push_back(Node(x, y));
21        }
22        sort(nodes.begin(), nodes.end(), cmp);
23         for( int i =  0, tmp; i < m; i++) {
24               tmp = n - nodes[i].can_give;
25                if(tmp >=  0) {
26                      n = tmp;
27                      min_use += nodes[i].money * nodes[i].can_give;
28                       if(tmp ==  0) {
29                              break;
30                      }
31               } else {
32                      min_use += (nodes[i].can_give - n) * nodes[i].money;
33                       break;
34               }
35        }
36        printf( " %d\n ", min_use);
37         return  0;
38 }

混合牛奶

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...