您的位置:首页 > 其它

HDU-1009 FatMouse' Trade 贪心

2015-03-11 10:50 387 查看
题意:

 老鼠要拿猫粮(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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  贪心 ACM