1 条题解
-
0
这是一道经典的贪心算法题目,核心思路是优先买单价最低的牛奶来最小化总花费:
- 将所有奶农按牛奶单价从小到大排序。
- 依次遍历每个奶农,尽可能多地购买他的牛奶(直到买够需求量或买完他的产量)。
- 每买一次就累加对应的费用,最终得到最小总花费。
代码
#include <bits/stdc++.h> using namespace std; struct F { int p, a; } f[5005]; int main() { int n, m, ans = 0, rem; cin >> n >> m; rem = n; for (int i = 0; i < m; ++i) cin >> f[i].p >> f[i].a; // 冒泡排序按单价从小到大 for (int i = 0; i < m - 1; ++i) { for (int j = 0; j < m - 1 - i; ++j) { if (f[j].p > f[j + 1].p) { F t = f[j]; f[j] = f[j + 1]; f[j + 1] = t; } } } for (int i = 0; i < m && rem > 0; ++i) { int buy = (rem < f[i].a) ? rem : f[i].a; ans += buy * f[i].p; rem -= buy; } cout << ans << endl; return 0; }
- 1
信息
- ID
- 208
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 13
- 已通过
- 7
- 上传者
京公网安备 11011102002149号