题解:P1208 [USACO1.3] 混合牛奶 Mixing Milk
思路
很显然贪心,考虑从最小价格的奶农那里买奶,有多少买多少,买不起就结束。
具体实现看代码。
::::info[code]{open}
#include <bits/stdc++.h>
using namespace std;
int n, m, ans;
struct asdf{//存奶农结构体
int p, a;
}a[100010];
int cmp(asdf a,asdf b){//重载排序
return a.p < b.p;
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= m;i++){
cin >> a[i].p >> a[i].a;
}
sort(a+1,a+1+m,cmp);
for (int i = 1; i <= m;i++){//贪心
if(n>=a[i].a){//当前的钱够买所有的奶
n-=a[i].a;
ans+=a[i].a*a[i].p;//全买掉
}else{//不够买所有的奶
ans+=n*a[i].p;
n = 0;//能买多少买多少并结束
break;
}
}
cout << ans;
return 0;
}

浙公网安备 33010602011771号