欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 《P1208 [USACO1.3] 混合牛奶 Mixing Milk》

《P1208 [USACO1.3] 混合牛奶 Mixing Milk》

2025/4/29 21:07:18 来源:https://blog.csdn.net/Jasmine_llq/article/details/145358222  浏览:    关键词:《P1208 [USACO1.3] 混合牛奶 Mixing Milk》

题目描述

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

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

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

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

输入格式

第一行二个整数 n,mn,m,表示需要牛奶的总量,和提供牛奶的农民个数。

接下来 mm 行,每行两个整数 pi,aipi​,ai​,表示第 ii 个农民牛奶的单价,和农民 ii 一天最多能卖出的牛奶量。

输出格式

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

输入输出样例

输入 #1复制

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

输出 #1复制

630

说明/提示

【数据范围】
对于 100%100% 的数据:
0≤n,ai≤2×1060≤n,ai​≤2×106,0≤m≤50000≤m≤5000,0≤pi≤10000≤pi​≤1000

题目翻译来自 NOCOW。

USACO Training Section 1.3

C语言代码实现:

#include <stdio.h>

int main() {
    int n,m,j,k,i,sum=0;
    scanf("%d %d", &n,&m);
    int d[m][2];
    for ( i = 0; i < m; i++) {
        scanf("%d %d", &d[i][0],&d[i][1]);
    }
   for(i=0;i<m;i++)
   {
       for(j=0;j<m-1-i;j++)
       {
           if(d[j][0]>d[j+1][0])
           {
               k=d[j][1];
               d[j][1]=d[j+1][1];
               d[j+1][1]=k;
               k=d[j][0];
               d[j][0]=d[j+1][0];
               d[j+1][0]=k;
        }
    }
   }
   for(i=0;i<m;i++)
   {
       if(n>=d[i][1])
       {
           k=d[i][1]*d[i][0];
           sum+=k;
           n-=d[i][1];
    }
    else if(n<d[i][1])
    {
        k=d[i][0]*n;
        sum+=k;
        break;
    }
   }
   printf("%d",sum);
    
    return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词