贪心水题,按单价排序,能买就买
/*
ID:shijiey1
PROG:milk
LANG:C++
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct Node{
int all;
int unit;
bool operator < (const Node &n) const {
return unit < n.unit;
}
};
int tot, n;
int money = 0;
Node arr[5050];
int main() {
freopen("milk.in", "r", stdin);
freopen("milk.out", "w", stdout);
scanf("%d %d", &tot, &n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &arr[i].unit, &arr[i].all);
}
sort(arr, arr + n);
for (int i = 0; i < n; i++) {
if (tot - arr[i].all >= 0) {
money += arr[i].all * arr[i].unit;
tot -= arr[i].all;
} else {
money += tot * arr[i].unit;
break;
}
}
printf("%d\n", money);
return 0;
}
本文介绍了一个使用贪心算法解决的简单问题:买牛奶。通过将牛奶供应商按单价排序,并尽可能从低价供应商购买所需数量的牛奶来实现成本最小化。

被折叠的 条评论
为什么被折叠?



