HDU-1009 FatMouse' Trade 贪心

来源:互联网 发布:八皇后问题循环算法 编辑:程序博客网 时间:2024/06/11 14:53

题意:
 老鼠要拿猫粮(F)换鼠粮(J)
 老鼠手上有M磅猫粮(F),有N个房间,每个房间的猫都开出了不同的兑换比例
 输入数据为每个房间中用多少猫粮(F)可以换多少鼠粮(J)
 需要计算老鼠最多可换得鼠粮(J)总数

思路:
 计算每个房间猫鼠粮的权重比并进行排序,优先兑换比重大的

Code:

#include <iostream>#include <algorithm>#include <iomanip>#include <cstdio>using namespace std;struct Food{  double j, f;  double rate;}food[1005];int cmp(Food x, Food y){    return x.rate > y.rate;}int main(){#ifndef ONLINE_JUDGE    freopen("1009in.txt","r",stdin);#endif    int m, n;    int i;    double sum;    while(cin>>m>>n && !(m == -1 || n == -1)){        for(i = 0; i < n; i++){            cin>>food[i].j>>food[i].f;            food[i].rate = food[i].j  / food[i].f;        }        sort(food, food+n, cmp);    sum = 0;    for(i = 0; i < n; i++){        if(m*food[i].rate <= food[i].j){            sum += m*food[i].rate;            break;        }        else{            sum += food[i].j;            m -= food[i].f;        }    }    cout<<fixed<<setprecision(3)<<sum<<endl;    }    return 0;}
0 0
原创粉丝点击