#include<stdio.h>
#include<algorithm>
using namespace std;
struct want
{
double food,need;
double per;
}mouse[1005];
int cmp(want a,want b)
{
return a.per>b.per;
}
int main()
{
int m,n,i,need,flag;
double sum;
while(scanf("%d%d",&m,&n)!=EOF)
{
sum=0;
need=0;
flag=0;
if(m==-1&&n==-1)
{
break;
}
for(i=0;i<n;i++)
{
scanf("%lf%lf",&mouse[i].food,&mouse[i].need);
mouse[i].per=mouse[i].food/mouse[i].need;
}
sort(mouse,mouse+n,cmp);
for(i=0;i<n;i++)
{
sum+=mouse[i].food;
need+=mouse[i].need;
if(need>m)
{
sum-=mouse[i].food;
need-=mouse[i].need;
flag=1;
break;
}
}
if(flag==1)
{
sum+=mouse[i].per*(m-need);
}
printf("%.3f\n",sum);
}
}
Hdu1009 - FatMouse' Trade - 贪心算法
最新推荐文章于 2021-03-03 15:43:48 发布