USACO Training Section 1.3 Mixing Milk 解题报告&AC代码

解题报告:

这道题估计是让大家熟悉贪心是个什么东西,红果果的贪心,把单价从小到大排一下,谁便宜买谁的。

AC代码:

/*
ID: yuanmz91
PROG: milk
LANG: C++
*/
#include <fstream>
#include <cstdlib>
using namespace std;
class farmer
{
public:
    int price;
    int amount;
};  //农场主类,用来储存产量和单价
int compare(const void * elem_a, const void * elem_b)
{
    return (*(farmer *)elem_a).price - (*(farmer *)elem_b).price;
}  //调用快排使用的比较函数,比较单价,并且小单价排前面
int main()
{
    ifstream fin("milk.in");
    ofstream fout("milk.out");
    int milknum, farmernum;
    int price = 0, mark = 0;
    farmer * source;
    fin >> milknum >> farmernum;
    source = new farmer [farmernum];
    for(int i = 0; i != farmernum; ++i)
    {
        fin >> source[i].price >> source[i].amount;
    }
    qsort(source, farmernum, sizeof(farmer), compare);  //对单价从小到大排序
    while(milknum > source[mark].amount)
    {
        price += source[mark].price * source[mark].amount;
        milknum -= source[mark].amount;
        mark++;
    }  //按单价从小到大购买
    price += milknum * source[mark].price;  //如果有超出了,分给后面一家
    fout << price << endl;
    delete source;  //new过的东西记得delete
}

下面是题目:

英文版:

Mixing Milk

Since milk packaging is such a low margin business, it is important to keep the price of the raw product (milk) as low as possible. Help Merry Milk Makers get the milk they need in the cheapest possible manner.

The Merry Milk Makers company has several farmers from which they may buy milk, and each one has a (potentially) different price at which they sell to the milk packing plant. Moreover, as a cow can only produce so much milk a day, the farmers only have so much milk to sell per day. Each day, Merry Milk Makers can purchase an integral amount of milk from each farmer, less than or equal to the farmer's limit.

Given the Merry Milk Makers' daily requirement of milk, along with the cost per gallon and amount of available milk for each farmer, calculate the minimum amount of money that it takes to fulfill the Merry Milk Makers' requirements.

Note: The total milk produced per day by the farmers will be sufficient to meet the demands of the Merry Milk Makers.

PROGRAM NAME: milk

INPUT FORMAT

Line 1:Two integers, N and M.
The first value, N, (0 <= N <= 2,000,000) is the amount of milk that Merry Milk Makers' want per day. The second, M, (0 <= M <= 5,000) is the number of farmers that they may buy from.
Lines 2 through M+1:The next M lines each contain two integers, Pi and Ai.
Pi (0 <= Pi <= 1,000) is price in cents that farmer i charges.
Ai (0 <= Ai <= 2,000,000) is the amount of milk that farmer i can sell to Merry Milk Makers per day.

SAMPLE INPUT (file milk.in)

100 5
5 20
9 40
3 10
8 80
6 30

OUTPUT FORMAT

A single line with a single integer that is the minimum price that Merry Milk Makers can get their milk at for one day.

SAMPLE OUTPUT (file milk.out)

630

中文版:

描述

由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要。帮助梅丽乳业找到最优的牛奶采购方案。

梅丽乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是不同的。此外,就像每头奶牛每天只能挤出固定数量的奶,每位奶农每天能提供的牛奶数量是一定的。每天梅丽乳业可以从奶农手中采购到小于或者等于奶农最大产量的整数数量的牛奶。

给出梅丽乳业每天对牛奶的需求量,还有每位奶农提供的牛奶单价和产量。计算采购足够数量的牛奶所需的最小花费。

注:每天所有奶农的总产量大于梅丽乳业的需求量。 

格式

PROGRAM NAME: milk

INPUT FORMAT:file milk.in

第 1 行共二个数值:N,(0<=N<=2,000,000)是需要牛奶的总数;M,(0<= M<=5,000)是提供牛奶的农民个数。

第 2 到 M+1 行:每行二个整数:Pi 和 Ai

Pi(0<= Pi<=1,000) 是农民 i 的牛奶的价格。

Ai(0 <= Ai <= 2,000,000)是农民 i 一天能卖给Marry的牛奶制造公司的牛奶数量。

OUTPUT FORMAT:file milk.out

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

SAMPLE INPUT

 100 5
 5 20
 9 40
 3 10
 8 80
 6 30

SAMPLE OUTPUT

630

测试数据:

测试数据太多了,这里用附件表示吧……





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值