hdu1009简单数据结构-结构体&贪心比例最大以及sort快速排序

来源:互联网 发布:跑步软件咕咚 编辑:程序博客网 时间:2024/04/30 23:28
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int M,N,i;double sum;struct house{    int J,F;    double rate;}node[1000];bool cmp(house a,house b){    return a.rate>b.rate;}int main(){    while(scanf("%d%d",&M,&N)!=EOF,(M!=-1 || N!=-1))    {        for(i=1;i<=N;i++)        {            scanf("%d%d",&node[i].J,&node[i].F);            node[i].rate=(double)node[i].J/node[i].F;        }        sort(node+1,node+N+1,cmp);        sum=0.000;        i=1;        if(N==0)        {            printf("0.000\n");        }        else if(M==0)        {            while(node[i].F==0 && i<=N)            {                sum+=(double)node[i].J;                i++;            }            printf("%.3lf\n",sum);        }        else        {            while(M)            {                if(node[i].F<M)                {                    sum+=node[i].J;                    M-=node[i].F;                }                else                {                    sum+=(double)node[i].rate*M;                    break;                }                i++;            }            printf("%.3lf\n",sum);        }    }    return 0;}
0 0