hdu1009FatMouse' Trade

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qiaojun1234567/article/details/23036335

题目链接:FatMouse' Trade

题目大意:有一只老鼠想和猫换取自己喜欢吃的食物(javabeans)它自己拥有的猫食m,问最多能得到多少javabeans?地道的贪心,注意贪心的策略是尽可能的拿更少的猫食物换取更多的javabeans。

AC代码:

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
struct T
{
    double javabean;
    double Fatfood;
    double max;
}trade[1002];
bool cmp(T a,T b)
{
    return a.max>b.max;
}
int main()
{
    double m;
    int n;
    while(cin>>m>>n)
    {
        if(m==-1 && n==-1)
            break;
        for(int i=0;i<n;i++)
        {
            cin>>trade[i].javabean>>trade[i].Fatfood;
            trade[i].max=trade[i].javabean/trade[i].Fatfood;
        }
        sort(trade,trade+n,cmp);//按照单位猫食得到的最大javabean进行排序(从大到小)
        double sum=0;
        for(int i=0;i<n;i++)
        {
            if(trade[i].Fatfood<=m)
            {
                sum+=trade[i].javabean;
                m-=trade[i].Fatfood;
            }
            else
            {
                sum+=m*trade[i].max;
                break;
            }
        }
        printf("%.3f\n",sum);
    }
    return 0;
}


 

猜你喜欢

转载自blog.csdn.net/qiaojun1234567/article/details/23036335