今日题目
[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;}