P1208 [USACO1.3]混合牛奶
https://www.luogu.com.cn/problem/P1208
题目意思
- 类似。背包。有n个单位牛奶需求。m个供应商。他们有其价格和数量
- 找到花费最少的钱满足牛奶需求。
想法
- 直接用贪心来找到最低价的牛奶疯狂买入
- 如果不够,再去买其他较高的价格牛奶
//P1208 [USACO1.3]混合牛奶 Mixing Milk
// Created by majoe on 2020/4/30.
//https://www.luogu.com.cn/problem/P1208
#include <bits/stdc++.h>
using namespace std;
//n,m表示需要牛奶的总量,和提供牛奶奶厂个数,s为花费
int n,m,s;
//结构体用于存放奶厂的信息,price每单位的价格,num奶的数量
struct cow{
int price,num;
}cows[5010];
bool cmp(cow e1 , cow e2){
return e1.price < e2.price;
}
int main(){
cin >> n >> m;
for (int i = 1; i <=m; ++i) {
cin >> cows[i].price>> cows[i].num;
}
sort(cows+1,cows+1+m,cmp);
for (int i = 1; i <=n ; ++i) {
//如果某个奶厂的数量不够,直接全买了
if(n > cows[i].num){
n -= cows[i].num;
s += cows[i].num * cows[i].price;
} else{
s += n * cows[i].price;
break;
}
}
cout << s;
return 0;
}