今日题目
[USACO1.3]混合牛奶 Mixing Milk - 洛谷
🌰思路:这道题比较容易,用结构体存储每个奶农提供的牛奶单价和数量,并按牛奶单价从小到大排序。遍历vector,如果现有数量加上当前奶农的数量小于需要的数量,就将现有数量和总价更新,否则总价只需加上单价*(所需数量-当前奶农的数量)就可以结束循环了~
🌰AC代码:
#include<bits/stdc++.h>
using namespace std;
struct node {
int price, count;
};
bool cmp(const node& a, const node& b) {
return a.price < b.price;
}
int main() {
int n, m;
cin >> n >> m;
vector<node> v(m);
for (int i = 0; i < m; i++) {
cin >> v[i].price >> v[i].count;
}
sort(v.begin(), v.end(), cmp);
int cnt= 0,sum=0;
for (auto it = v.begin(); it != v.end(); it++) {
if (cnt + it->count <= n) {
cnt += it->count;
sum += it->price * it->count;
}
else {
sum += (n - cnt) * it->price;
break;
}
}
cout << sum;
return 0;
}