zoukankan      html  css  js  c++  java
  • USACO Section1.3 Mixing Milk 解题报告

        milk解题报告 —— icedream61 博客园(转载请注明出处)
    ------------------------------------------------------------------------------------------------------------------------------------------------
    【题目】
      我是牛奶制造商,我一天需要N加仑的牛奶,总共有M个农民可以供给我。
      这M个农民的信息共M行,第i个农民有num[i]加仑牛奶,每加仑价格为price[i]。
      求我买够牛奶所需的最少钱数。
      数据保证,农民生产的牛奶总数一定是够的。
    【数据范围】
      0<=N<=2,000,000
      0<=M<=5,000
      0<=price[i]<=1,000
      0<=num[i]<=2,000,000
    【输入样例】
      100 5
      5 20
      9 40
      3 10
      8 80
      6 30
    【输出样例】
      630
    ------------------------------------------------------------------------------------------------------------------------------------------------
    【分析】
      排序一下,贪心即可。
    ------------------------------------------------------------------------------------------------------------------------------------------------
    【总结】
      一遍AC。
      顺带复习了下类的运算符号重载。

    ------------------------------------------------------------------------------------------------------------------------------------------------

    【代码】

     1 /*
     2 ID: icedrea1
     3 PROB: milk
     4 LANG: C++
     5 */
     6 
     7 #include <iostream>
     8 #include <fstream>
     9 using namespace std;
    10 
    11 const int maxn = 2000000;
    12 const int maxm = 5000;
    13 
    14 struct Farmer
    15 {
    16     int price;
    17     int num;
    18     friend bool operator<(Farmer const &x,Farmer const &y) { return x.price<y.price; }
    19 };
    20 
    21 int N,M;
    22 Farmer F[1+maxm];
    23 
    24 void qsort(int l,int r)
    25 {
    26     if(l>=r) return;
    27     int i=l,j=r;
    28     Farmer x=F[(l+r)>>1];
    29     while(true)
    30     {
    31         while(F[i]<x) ++i;
    32         while(x<F[j]) --j;
    33         if(i>j) break;
    34         swap(F[i],F[j]);
    35         ++i; --j;
    36     }
    37     qsort(l,j); qsort(i,r);
    38 }
    39 
    40 int main()
    41 {
    42     ifstream in("milk.in");
    43     ofstream out("milk.out");
    44 
    45     in>>N>>M;
    46     for(int i=1;i<=M;++i) in>>F[i].price>>F[i].num;
    47 
    48     qsort(1,M);
    49 
    50     int cost=0;
    51     for(int i=1;N && i<=M;++i)
    52     {
    53         int num=min(N,F[i].num);
    54         N-=num; cost+=F[i].price*num;
    55     }
    56     out<<cost<<endl;
    57 
    58     in.close();
    59     out.close();
    60     return 0;
    61 }
  • 相关阅读:
    pexpect模块
    Python正则表达式
    telnetlib
    paramiko
    threadpool和Queue
    logging
    Python异常
    Python迭代器
    程序员工资那么高,却从不炫富?网友回复让人“笑喷了”!
    小白到web前端工程师需要学习哪些知识?
  • 原文地址:https://www.cnblogs.com/icedream61/p/4322748.html
Copyright © 2011-2022 走看看