HDOJ 1070 排序 水
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1070
要注意的点:
- 小于等于199ml的牛奶不买。
- 牛奶的有效容量小于等于1000ml。因为作者只喝5天内(包括第五天前的)的牛奶,每天喝200ml。牛奶多的部分丢掉。
- 牛奶的“价格容量比”相等时,购买实际容量最大的。
#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; }

浙公网安备 33010602011771号