HDU 1009(贪心)

来源:互联网 发布:js 获取get参数 编辑:程序博客网 时间:2024/05/17 03:30

题意:老鼠一共有m斤猫食,xxx一共有n个仓库。每个仓库有a b两种数据,a表示当前仓库一共有多少斤鼠食,b表示当前仓库要换a斤鼠食要多少猫食。求老鼠最多能换多少食物。

第一组数据是m n,接下来一共有n组数据,每组是对应仓库的a b。

 

 

#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;struct Cat{private:    int j, f;    double ave;public:    Cat() {}    Cat(int _j, int _f) : j(_j), f(_f)    {        ave = double(j) / f;    }    bool operator <(const Cat& rhs) const    {        return ave > rhs.ave;    }    int max()    {        return f;    }    double average()    {        return ave;    }    int maxfood()    {        return j;    }} cat[1010];int main(){    int m, n, i, j, f;    double sum;    while (scanf("%d%d", &m, &n) != EOF && ~m && ~n)    {        sum = 0;        for (i = 0; i < n; ++i)        {            scanf("%d%d", &j, &f);            cat[i] = Cat(j, f);        }        sort(cat, cat + n);        for (i = 0; i < n; ++i)        {            if (cat[i].max() >= m)            {                sum += cat[i].average() * m;                break;            }            else            {                sum += cat[i].maxfood();                m -= cat[i].max();            }        }        printf("%.3lf\n", sum);    }    return 0;}

0 0
原创粉丝点击