#include <stdio.h>
#include <algorithm>
#include <iostream>
using namespace std;
struct food
{
double p;//价值
double w;//重量
double r;//价格与重量的比值
} a[2000];
bool bigger(food a,food b)
{
return a.r>b.r;//比较函数,返回性价比 高的
}
double sum;
int main()
{
freopen("in.txt","r",stdin);
int m,n,i;
while(scanf("%d%d",&m,&n)!=EOF)
{
if(m==-1&&n==-1) break;
for(i=0; i<n; i++)
{
scanf("%lf%lf",&a[i].p,&a[i].w);
a[i].r=(double)a[i].p/a[i].w;
}
sort(a,a+n,bigger);
sum=0;//包内现有的价值
for(i=0; i<n; i++)
{
if(m>a[i].w)
{
sum+=a[i].p;
m-=a[i].w;
}
else
{
sum+=a[i].r*m;
//m=0;
break;
}
}
printf("%.3lf\n",sum);
}
return 0;
}
HDU1009 FatMouse' Trade(经典贪心)
最新推荐文章于 2019-11-08 21:42:24 发布