USACO1.3 Mixing Milk(milk)

        一个最简单的贪心策略的问题,使用multimap<int,int>按照价格由低到高排序,依次买价格最低的牛奶,直到买够。

 

/*
ID:jzzlee1
PROG:milk
LANG:C++
*/
#include <fstream>
#include<iostream>
#include<map>
#include<utility>
#include<cstring>
using namespace std;
ifstream fin("milk.in");
ofstream fout("milk.out");
int main()
{
	int n,m;
	fin>>n>>m;
	multimap<int,int> maps;
	int x,y;int i;
	for(i=0;i!=m;i++)
	{
		fin>>x>>y;
		maps.insert(make_pair(x,y));
	}
	multimap<int,int>::iterator it;
	int sum=0,money=0;
	for(it=maps.begin();sum!=n;it++)
	{
		if(n-sum>it->second)
		{
			sum+=it->second;
			money+=it->first*it->second;
		}
		else
		{
			money+=it->first*(n-sum);
			sum=n;
		}
	}
	fout<<money<<endl;
	return 0;
}

 

你可能感兴趣的:(USACO)