题目

题目描述

Merry Milk Makers 公司的业务是销售牛奶。它从农夫那里收购N单位的牛奶,然后销售出去。现在有M个农夫,每个农夫都存有一定量的牛奶,而且每个农夫都会有自己的定价。假设所有农夫的牛奶量总是可以满足MMM公司的进货量,现在我们需要做的就是计算出MMM最少需要花费多少钱来购买N单位的牛奶。

数据输入第一行给出两个整数N与M,接下来依次给出每个农夫牛奶的单价Pi与存有的牛奶的量Ai。

数据范围

  1. 0 <= N <= 2000000
  2. 0 <= M <= 5000
  3. 0 <= Pi <= 1000
  4. 0 <= 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 解题报告的更多相关文章

  1. USACO Section1.3 Mixing Milk 解题报告

    milk解题报告 —— icedream61 博客园(转载请注明出处)----------------------------------------------------------------- ...

  2. USACO Section1.4 Mother's Milk 解题报告

    milk3解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  3. USACO Section 1.3 Prime Cryptarithm 解题报告

    题目 题目描述 牛式的定义,我们首先需要看下面这个算式结构: * * * x * * ------- * * * <-- partial product 1 * * * <-- parti ...

  4. USACO Section 1.4 Arithmetic Progressions 解题报告

    题目 题目描述 现在给你一个数集,里面的数字都是由p^2+q^2这种形式构成的0 <= p,q <= M,我现在需要你在其中找出一个长为N的等差数列,数列中的第一个数字为a,公差为b,当你 ...

  5. USACO Section 1.3 Combination Lock 解题报告

    题目 题目描述 农夫John的牛从农场逃脱出去了,所以他决定用一个密码锁来把农场的门锁起来,这个密码锁有三个表盘,每个表盘都是环形的,而且上面刻有1~N,现在John设了一个开锁密码,而且这个锁的设计 ...

  6. USACO Section 1.3 Barn Repair 解题报告

    题目 题目描述 某农夫有一个养牛场,所有的牛圈都相邻的排成一排(共有S个牛圈),每个牛圈里面最多只圈养一头牛.有一天狂风卷积着乌云,电闪雷鸣,把牛圈的门给刮走了.幸运的是,有些牛因为放假,所以没在自己 ...

  7. USACO Section 1.2 Dual Palindromes 解题报告

    题目 题目描述 有一些数(如 21),在十进制时不是回文数,但在其它进制(如二进制时为 10101)时就是回文数. 编一个程序,从文件读入两个十进制数N.S.然后找出前 N 个满足大于 S 且在两种以 ...

  8. USACO Section 1.2 Palindromic Squares 解题报告

    题目 题目描述 输入一个基数B,现在要从1到300之间找出一些符合要求的数字N.如果N的平方转换成B进制数之后是一个回文串,那么N就符合要求.我们将N转换成B进制数输出,然后再将N的平方转换成B进制数 ...

  9. USACO Section 1.2 Milking Cows 解题报告

    题目 题目描述 有3个农夫每天早上五点钟便起床去挤牛奶,现在第一个农夫挤牛奶的时刻为300(五点钟之后的第300个分钟开始),1000的时候结束.第二个农夫从700开始,1200结束.最后一个农夫从1 ...

随机推荐

  1. iOS中静态库-.a文件生成和使用

    最近在使用使用一个网上的Demo的时候. 出现另一令人烦恼的问题 . 就是它里面有嵌套的工程. 如下图所示. 工程里面还嵌套有一个工程. 真的是让人煞费苦心 …其实这个问题看起来并不是很难, 如果是一 ...

  2. Hololens 开发环境配置

    安装 Hololens SDK 转自 Vangos Pterneas, 4 Apr 2016 CPOL    5.00 (1 vote) vote 1vote 2vote 3vote 4vote 5 ...

  3. QQ 自动接收远程连接之关闭了远程桌面

    之前使用都好好的,后来就不知道怎么了突然就不行了,在另外一个远程桌面软件(向日葵)失效后,木有办法,查查查,终于查出来了,是我本机的时间服务停止了,导致我本机的时间和服务器时间不一致,所以连接不上.只 ...

  4. and的用法(&)

    经常看到jq的源码中各种&连接在一起赋值一个变量, 例一: var b = a&&a.getName 例二: var b = a&&a.getName||d 例 ...

  5. centos7 python

      yum -y install gcc cd /usr/local/src  wget  https://www.python.org/ftp/python/3.6.0/Python-3.6.0a1 ...

  6. isr

    Kafaka动态维护了一个同步状态的副本的集合(a set of in-sync replicas),简称ISR

  7. kill -0

    http://unix.stackexchange.com/questions/169898/what-does-kill-0-do 检查有没有权限杀他

  8. 编程实现Windows瞬间关机

    我们先来看看Windows正常的关机流程:①关机指令通知Windows子系统csrss.exe,csrss.exe收到通知后会和Winlogon.exe做一个数据交换,再由Winlogon.exe通知 ...

  9. Android OpenGL ES(三)OpenGL ES API 命名习惯 .

    OpenGL ES是个跨平台的3D图形开发包规范,最常见的实现是采用C语言实现的,Android OpenGL ES 实现上是使用Java 语言对底层的C接口进行了封装,因此在android.open ...

  10. php中获取各种路径

    echo $_SERVER['DOCUMENT_ROOT'].""; //获得服务器文档根 echo $_SERVER['PHP_SELF'].""; //获得 ...