hdu1009 FatMouse' Trade 贪心算法

该博客介绍了一个ACM竞赛中的问题——FatMouse's Trade,通过贪心算法来寻找老鼠能用最少的猫粮换取最多咖啡豆的方法。关键在于按咖啡豆与猫粮比例排序房间,每次选取比例最高的房间交易,直至猫粮用尽。题目提供了输入输出样例,并展示了相关代码实现。
摘要由CSDN通过智能技术生成

题目描述:老鼠去找猫用猫粮换咖啡豆,猫都住在一个仓库里面,里面有很多房间,每个房间都装得有咖啡豆j[i],但是需要缴纳一定的咖啡豆f[i],老鼠不需要全部拿完i-th间所有的咖啡豆j[i],如果它缴纳f[i]*a%的猫粮,就可以获得j[i]*a%的咖啡豆,所有的数据都是不超过1000的非负整数。

现在要求老鼠可以换到多少的咖啡豆,结果保留3位小数.

我们买东西都会遵循的一个原则:花费最少,收获最大,这个是解决这个题目的关键 .。
我们每次都尽量取完咖啡豆最多,消耗猫粮最少的房间的所有东西,对于比例的问题,应该是放在当所持有的猫粮少于房间所需要的猫粮时才会考虑。
由此引出一个关键步骤:排序。
设置一个结构体表示房间:

Struct Hourse{
    int j;//里面的咖啡豆
    int f;//需要的猫粮
}

我们排序的依据是咖啡豆与猫粮的比例,比例越高,那么这个房间就应该先被考虑。
构造一个比较函数cmp()

bool cmp(hourse a,hourse b){
    if((a.j/(double)a.f)>(b
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值