hdu1009

来源:互联网 发布:阿里云cdn协议跟随 编辑:程序博客网 时间:2024/05/21 11:25
//简单的贪心,注意边界情况#include <iostream>#include <algorithm>#include <cstdio>using namespace std;using namespace std; struct node {     double w;     double v;     double k; }; int cmp(node c,node d) {     return c.k>d.k; }int main()  {      int i,j,n;      double m;      node a[10005];      double sum;      while((scanf("%lf%d",&m,&n)==2)&&((n!=-1)||(m!=-1)))      {          sum=0;          for (i=0;i<n;i++)          {              scanf("%lf%lf",&a[i].w,&a[i].v);              a[i].k=a[i].w*1.0/a[i].v;          }          sort(a,a+n,cmp);          j=0;          while(1)          {            if (j==n)            break;            if (m>=a[j].v)            {             sum=sum+a[j].w;             m=m-a[j].v;             j++;            }            else            {                sum=sum+a[j].w*1.0/a[j].v*m;                break;            }           }           printf("%.3f\n",sum);        }      return 0;}

0 0