#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define INF 0x3f3f3f
using namespace std;
struct node
{
int s,v;
double val;
}edge[10100];
double cmp(node a,node b)
{
return a.val>b.val;
}
int main()
{
int m,n;
double cnt;
int i;
while(scanf("%d%d",&m,&n)!=EOF)
{
cnt=0.0;
if(m==-1&&n==-1)
break;
for(i=0;i<n;i++)
{
scanf("%d%d",&edge[i].s,&edge[i].v);
if(edge[i].v!=0)
edge[i].val=(double)edge[i].s/(double)edge[i].v;
else
edge[i].val=INF;//这一步不要缺少了,是针对这一组数据
// 0 2
// 1 0
// 1 1
}
sort(edge,edge+n,cmp);
for(i=0;i<n;i++)
{
if(m>=edge[i].v)
{
cnt=cnt+edge[i].s;
m=m-edge[i].v;
}
else
{
cnt=cnt+m*edge[i].val;
break;
}
}
printf("%.3lf\n",cnt);
}
return 0;
}
hdu 1009 FatMouse' Trade
最新推荐文章于 2021-05-09 21:32:11 发布