Mixing Milk

http://train.usaco.org/usacoprob2?a=9CYvwksB366&S=milk

题目大意:

MMM公司需要N单位牛奶,每个农场提供ai单位牛奶,单价为pi。

求MMM公司购买所需牛奶的最少花费。(所有农村提柜的牛奶总和大于等于公司的需求)

#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct famer {
	int price;
	int available;
} f[5000];
bool operator < (const famer & a, const famer & b)
{
	return a.price < b.price;
}
int main()
{
	ifstream fin("milk.in");
	ofstream fout("milk.out");
	int n, m, ans, t;
	while(fin >> n >> m)
	{
		t = ans = 0;
		for(int i = 0; i < m; i++) fin >> f[i].price >> f[i].available;
		sort(f, f + m);
		for(int i = 0; i < m && t < n; i++)
		{
			if(f[i].available <= n - t) ans = ans + f[i].price*f[i].available;
			else ans = ans + f[i].price*(n - t);
			t += f[i].available;
		}
		fout << ans << endl;	
	}
	return 0;
}


你可能感兴趣的:(C++,水题,贪心)