一道简单的DP
但是也算是学了学C里面的qsort怎么样 LOL
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
double j,f;
double k;
}cat;
cat a[10002];
int cmp(const void *a,const void *b)
{
return (*(cat*)a).k<(*(cat*)b).k?1:-1;
}
int main()
{
int i,j;
double m,n,sum;
while(scanf("%lf%lf",&m,&n),n!=-1||m!=-1)
{
sum = 0;
for(i=0;i<n;i++)
{
scanf("%lf%lf",&a[i].j,&a[i].f);
a[i].k=(a[i].j*1.0)/a[i].f;
}
qsort(a,n,sizeof(a[0]),cmp);
i=0;
while(i<n)
{
if(m>=a[i].f)
{
sum+=a[i].j;
m=m-a[i].f;
i++;
}
else
{
sum+=m*1.0*a[i].k;
break;
}
}
printf("%.3lf\n",sum);
}
return 0;
}