P1208 [USACO1.3]混合牛奶 Mixing Milk(贪心思想加一点特别的循环)

简介: P1208 [USACO1.3]混合牛奶 Mixing Milk(贪心思想加一点特别的循环)

题目描述



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


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


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


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


输入格式



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

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


输出格式



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


输入输出样例



输入 #1复制

100 5

5 20

9 40

3 10

8 80

6 30


输出 #1复制

630


说明/提示



【数据范围】

对于  100% 的数据:

0≤n,ai≤2×106, 0≤m≤5000, 0≤pi≤1000

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+7;
struct node{
  int x,y;
}s[maxn];
bool cmp(node a,node b)
{
return a.x<b.x; 
}
int main()
{
  int m,n;int ans=0;
  cin>>m>>n;
  for(int i=1;i<=n;i++)
  {
    cin>>s[i].x>>s[i].y; 
  } 
  sort(s+1,s+1+n,cmp);
  int j=1;
  while(m)
  {
      if(s[j].y)//我们可以一套一套的买完 
      {
        s[j].y--;
        ans+=s[j].x;
        m--;
      }
      else
      j++;
  }
  cout<<ans;
}



相关文章
|
5月前
|
算法 测试技术 C#
C++前缀和算法的应用:石头游戏 VIII 原理源码测试用例
C++前缀和算法的应用:石头游戏 VIII 原理源码测试用例
|
8月前
|
算法
Plant(快速幂+数学分析(没想到吧,数学无处不在))
Plant(快速幂+数学分析(没想到吧,数学无处不在))
27 0
|
8月前
挤奶牛奶预备事项(应用的数学分析,贪心思想)
挤奶牛奶预备事项(应用的数学分析,贪心思想)
17 0
|
10月前
|
C语言 C++
【二分查找】LCP 18. 早餐组合
【二分查找】LCP 18. 早餐组合
71 0
【CCCC】L3-018 森森美图 (30分),计算几何+判断三点共线+bfs最短路
【CCCC】L3-018 森森美图 (30分),计算几何+判断三点共线+bfs最短路
113 0
|
人工智能 移动开发 算法
【CCCC】L3-032 关于深度优先搜索和逆序对的题应该不会很难吧这件事 (30分)
【CCCC】L3-032 关于深度优先搜索和逆序对的题应该不会很难吧这件事 (30分)
141 0
|
Java Shell
Codeforces Round #746 (Div. 2) D - Hemose in ICPC ?(交互 二分 欧拉序)
Codeforces Round #746 (Div. 2) D - Hemose in ICPC ?(交互 二分 欧拉序)
135 0
|
算法 C++
【数独 1】不回溯,试试候选数法1ms高效解数独谜题-C++实现(下)
【数独 1】不回溯,试试候选数法1ms高效解数独谜题-C++实现(下)
83 0
|
算法 C++
【数独 1】不回溯,试试候选数法1ms高效解数独谜题-C++实现(上)
【数独 1】不回溯,试试候选数法1ms高效解数独谜题-C++实现(上)
107 0