当前位置: 首页 > news >正文

混合牛奶 | 贪心算法 (USACO练习题)

一、混合牛奶 (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

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

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

【代码】

ExpandedBlockStart.gif
 1 #include <algorithm>
 2 #include <cstdio>
 3 #include <vector>
 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<Node> 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 }
混合牛奶

转载于:https://www.cnblogs.com/uedge/p/5422712.html

相关文章:

  • Solarized Scheme
  • Leetcode题目:Symmetric Tree
  • spring测试junit事务管理及spring面向接口注入和实现类单独注入(无实现接口),实现类实现接口而实现类单独注入否则会报错。...
  • CodeForces 660C Hard Process
  • 流媒体选择Nginx是福还是祸?
  • 解读Secondary NameNode的功能
  • linux下Bash函数功能之编写脚本(十二)
  • PHP~foreach遍历名单数组~有必要多次观看练习
  • 玩聚的博客墙 V
  • 第九周周记
  • Linux系统下proc目录详解
  • 每天一个linux命令:du
  • 【Swift学习】Swift编程之旅---类和结构体(十三)
  • 源代码的下载和编译
  • SSH的整合
  • Java 内存分配及垃圾回收机制初探
  • Javascript 原型链
  • javascript从右向左截取指定位数字符的3种方法
  • Java教程_软件开发基础
  • PHP那些事儿
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 给初学者:JavaScript 中数组操作注意点
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 原生 js 实现移动端 Touch 滑动反弹
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​人工智能书单(数学基础篇)
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • $.ajax()参数及用法
  • (多级缓存)多级缓存
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (十)T检验-第一部分
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)EOS中账户、钱包和密钥的关系
  • (转)jQuery 基础
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .cfg\.dat\.mak(持续补充)
  • .gitattributes 文件
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET DataGridView数据绑定说明
  • .Net MVC4 上传大文件,并保存表单
  • .NET开源快速、强大、免费的电子表格组件
  • /etc/motd and /etc/issue
  • /etc/shadow字段详解
  • @media screen 针对不同移动设备
  • @Query中countQuery的介绍
  • @RequestMapping 的作用是什么?
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504