杭电1433

xiaoxiao2021-02-28  31

这是一个贪心问题,

#include<cstdio>#include<algorithm>using namespace std;#define MAX 1001struct node{    double j,f,c;}num[MAX];int n;double m; bool cmp(const struct node &a,const struct node &b){    return b.c>a.c;}int main(){    while(~scanf("%lf%d",&m,&n))    {        if(m==-1&&n==-1)            break;        for(int i=0;i<n;++i)        {            scanf("%lf%lf",&num[i].j,&num[i].f);            num[i].c=num[i].f/num[i].j;        }        sort(num,num+n,cmp);        double sum=0.0;        for(int i=0;i<n;i++)        {            if(m<=0)                break;            if(m>=num[i].f)            {                sum+=num[i].j;                m-=num[i].f;            }            else{                sum+=(num[i].j*(m/num[i].f));                m=0;            }        }        printf("%.3f\n",sum);    }    return 0;}

转载请注明原文地址: https://www.6miu.com/read-2622807.html

最新回复(0)