HDOJ 1070 排序 水

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1070

要注意的点:

  1. 小于等于199ml的牛奶不买。
  2. 牛奶的有效容量小于等于1000ml。因为作者只喝5天内(包括第五天前的)的牛奶,每天喝200ml。牛奶多的部分丢掉。
  3. 牛奶的“价格容量比”相等时,购买实际容量最大的。
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;

class Milk
{
public:
    string brandName;
    int price, volume;
    double rate;
};

vector<Milk> milks;

int cmp(const Milk &m1, const Milk &m2)
{
    if (m1.rate != m2.rate)
        return m1.rate < m2.rate;
    else
        return m1.volume > m2.volume;
}

int main ()
{
    int caseNum;
    scanf("%d",&caseNum);
    for (int i = 0;i < caseNum;i ++)
    {
        milks.clear();
        int brandNum;
        cin >> brandNum;
        Milk aMilk;
        for (int j = 0;j < brandNum;j ++)
        {
            cin >> aMilk.brandName >> aMilk.price >> aMilk.volume;
            //如果不够200ml,不用考虑
            if (aMilk.volume < 200)
                continue;
            int validityDay = aMilk.volume / 200;
            //保质期最多五天
            if (validityDay > 5)
                validityDay = 5;
            //价格/有效容量
            aMilk.rate = aMilk.price / validityDay;
            milks.push_back(aMilk);
        }
        sort(milks.begin(), milks.end(), cmp);
        cout << milks[0].brandName << endl;
    }
    return 0;
}
posted @ 2012-08-24 20:23  peaceful  阅读(154)  评论(0)    收藏  举报