hdu 1009 数学题 简单贪心

本题要注意贪心的标准比较,要将除法改成乘法,注意细节,妙啊

#include <stdio.h>
#include <iostream>
using namespace std;

int main()
{
	int m,n,i,j,a[1000][2];

	while(scanf("%d%d",&m,&n),m!=-1&&n!=-1)
	{
		for(i=0;i<n;i++)
			scanf("%d%d",&a[i][0],&a[i][1]);

		for(i=0;i<n-1;i++)
		{
			for(j=i+1;j<n;j++)
			{
				if((a[i][0]*a[j][1])<(a[j][0]*a[i][1]))
				{
					swap(a[i][0],a[j][0]);
					swap(a[i][1],a[j][1]);
				}
			}
		}

		double sum=0;

		for(i=0;i<n;i++)
		{
			if(m>a[i][1])
			{
				m-=a[i][1];
				sum+=a[i][0];
			}else
			{
				sum+=(1.0*m/a[i][1])*a[i][0];
				break;
			}
		}

		printf("%.3lf\n",sum);
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/jackes/p/2424627.html