USACO Section 1.3 Mixing Milk 解题报告
题目
题目描述
Merry Milk Makers 公司的业务是销售牛奶。它从农夫那里收购N单位的牛奶,然后销售出去。现在有M个农夫,每个农夫都存有一定量的牛奶,而且每个农夫都会有自己的定价。假设所有农夫的牛奶量总是可以满足MMM公司的进货量,现在我们需要做的就是计算出MMM最少需要花费多少钱来购买N单位的牛奶。
数据输入第一行给出两个整数N与M,接下来依次给出每个农夫牛奶的单价Pi与存有的牛奶的量Ai。
数据范围
0 <= N <= 20000000 <= M <= 50000 <= Pi <= 10000 <= Ai <= 2000000
样例输入
100 5
5 20
9 40
3 10
8 80
6 30
样例输出
630
解题思路
贪心算法,我们利用农夫牛奶的单价进行从小到大排序,然后我们按照这个顺序依次购买牛奶即可。
解题代码
/*
ID: yinzong2
PROG: milk
LANG: C++11
*/
#define MARK
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int MAXN = 5000+10;
int n,m;
struct Farmer {
int price;
int amount;
}f[MAXN];
bool cmp(Farmer a, Farmer b) {
return a.price <= b.price;
}
int main() {
#ifdef MARK
freopen("milk.in", "r", stdin);
freopen("milk.out", "w", stdout);
#endif // MARK
while(~scanf("%d%d", &n, &m)) {
for(int i = 0; i < m; i++) {
scanf("%d%d", &f[i].price, &f[i].amount);
}
sort(f, f+m, cmp);
int sum = 0;
for(int i = 0; i < m && n > 0; i++) {
if(f[i].amount <= n) {
n -= f[i].amount;
sum += (f[i].amount * f[i].price);
} else {
sum += (n * f[i].price);
n = 0;
break;
}
}
printf("%d\n", sum);
}
return 0;
}
USACO Section 1.3 Mixing Milk 解题报告的更多相关文章
- USACO Section1.3 Mixing Milk 解题报告
milk解题报告 —— icedream61 博客园(转载请注明出处)----------------------------------------------------------------- ...
- USACO Section1.4 Mother's Milk 解题报告
milk3解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- USACO Section 1.3 Prime Cryptarithm 解题报告
题目 题目描述 牛式的定义,我们首先需要看下面这个算式结构: * * * x * * ------- * * * <-- partial product 1 * * * <-- parti ...
- USACO Section 1.4 Arithmetic Progressions 解题报告
题目 题目描述 现在给你一个数集,里面的数字都是由p^2+q^2这种形式构成的0 <= p,q <= M,我现在需要你在其中找出一个长为N的等差数列,数列中的第一个数字为a,公差为b,当你 ...
- USACO Section 1.3 Combination Lock 解题报告
题目 题目描述 农夫John的牛从农场逃脱出去了,所以他决定用一个密码锁来把农场的门锁起来,这个密码锁有三个表盘,每个表盘都是环形的,而且上面刻有1~N,现在John设了一个开锁密码,而且这个锁的设计 ...
- USACO Section 1.3 Barn Repair 解题报告
题目 题目描述 某农夫有一个养牛场,所有的牛圈都相邻的排成一排(共有S个牛圈),每个牛圈里面最多只圈养一头牛.有一天狂风卷积着乌云,电闪雷鸣,把牛圈的门给刮走了.幸运的是,有些牛因为放假,所以没在自己 ...
- USACO Section 1.2 Dual Palindromes 解题报告
题目 题目描述 有一些数(如 21),在十进制时不是回文数,但在其它进制(如二进制时为 10101)时就是回文数. 编一个程序,从文件读入两个十进制数N.S.然后找出前 N 个满足大于 S 且在两种以 ...
- USACO Section 1.2 Palindromic Squares 解题报告
题目 题目描述 输入一个基数B,现在要从1到300之间找出一些符合要求的数字N.如果N的平方转换成B进制数之后是一个回文串,那么N就符合要求.我们将N转换成B进制数输出,然后再将N的平方转换成B进制数 ...
- USACO Section 1.2 Milking Cows 解题报告
题目 题目描述 有3个农夫每天早上五点钟便起床去挤牛奶,现在第一个农夫挤牛奶的时刻为300(五点钟之后的第300个分钟开始),1000的时候结束.第二个农夫从700开始,1200结束.最后一个农夫从1 ...
随机推荐
- 在Java中Arrays工具类实现功能的六种方法
使用Arrays工具类,要先导入包即:import.java.util.Arrays 以下是实现六种功能的方法: 1.比较两个数组值是否相等: 结果为true.false.(布尔型不能比较) int ...
- 深入理解JAVA的多态性[转]
昨天看到一个关于多态性的帖子,参考了回帖者的理解,加入了一些自己的看法,整理出来供大家参考,不一定完全正确,欢迎大家批评指正. (一)相关类 class A ...{ public S ...
- IoC容器Autofac正篇之简单实例(四)
先上一段代码. namespace ConsoleApplication3 { class Program { static void Main(string[] args) { ContainerB ...
- Html wmode 标签参数详解
原文出处:http://blog.sina.com.cn/s/blog_4532d8b50101g2sw.html 在网页中嵌入swf文件时,经常会用到wmode这个参数,而嵌入的swf出现的一些问题 ...
- vbscript语句
'vbscript语句Call'[call] name [argumentlist]'把控制转移到函数或子程序.当调用函数或子程序时,Call是可写可不写的.但是如果你用了Call,那么argumen ...
- plsql 安装后database下拉没有东西
今天第一天上班我自己也有点紧张,但是问题还是有的: 今天来说一下问题,就是装了plsql竟然在database这一栏没有东西,我也是纠结了很久,感觉今天的任务也被拉下了. 其实这个问题在我以前装的时候 ...
- C++函数后面的throw()
看CImage函数实现的时候发现了这么个东东 inline HBITMAP CImage::Detach() throw() 它是函数提供者和使用者的一种君子协定,标明该函数不抛出任何异常. 之所以 ...
- Spark集群搭建中的问题
参照<Spark实战高手之路>学习的,书籍电子版在51CTO网站 资料链接 Hadoop下载[链接](http://archive.apache.org/dist/hadoop/core/ ...
- java内部类继承--构造函数传参
/: innerclasses/InheritInner.java // Inheriting an inner class. class WithInner { class Inner {} } / ...
- java 接口与实现
Computable.java public interface Computable { int MAX = 46; int f(int x); } China.java public class ...