HDOJ HDU 1009 FatMouse' Trade

来源:互联网 发布:cctv网络电视播放器 编辑:程序博客网 时间:2024/06/05 16:21

HDOJ 1009 FatMouse’ Trade

题目

点击查看 HDOJ 1009 FatMouse’ Trade

题意

胖老鼠与猫准备了交易 javabean(java豆,作者幽默)
胖老鼠有 M 磅猫粮
胖老鼠要到 N 个房间交换 javabean
每个房间 J[I] 磅 javabean 需要 F[i] 磅猫粮
求胖老鼠最多能换得多少 javabean

题解

贪心算法
将房间按 javabean 与 猫粮 比值由大到小排列
依次进入交换,即可

代码

#include <iostream>#include <algorithm>#define max 1010using namespace std;struct per{    double j;    double f;    double div;};per rs[max]; bool cmp(const per & x,const per & y);int main(){    int m,n;    double res;    while(cin >> m >> n && (m != -1 && n != -1))    {        res = 0;        for(int i = 0;i < n;i++)        {            cin >> rs[i].j >> rs[i].f;            rs[i].div = rs[i].j / rs[i].f;          }        sort(rs,rs+n,cmp);        for(int i = 0;i < n;i++)        {//          cout << i << " " << rs[i].j<< " " << rs[i].f << " " << rs[i].div << endl;             if(m > rs[i].f)            {                res += rs[i].j;                m -= rs[i].f;            }            else            {                res += ((double)m / rs[i].f * rs[i].j);                break;            }        }        printf("%.3lf\n",res);    }    return 0;}bool cmp(const per & x,const per & y){    return x.div > y.div;}
原创粉丝点击