2570 迷瘴(hdu)

16 篇文章 0 订阅

题意理解

有n种药水,药水的体积都是V,每种药水的药物浓度是Pi,1<=i<=n,现将一种或几种药水混合,要求混合后的药水浓度不大于W,每种药水要么全部混合,要么不混合,求混合后药水的最大体积和对应的浓度?

问题分析

用贪心法,要是混合后的药水体积最大,那么药水的数量就要最多;要使药水的浓度尽可能小,那么选择的药水浓度就要尽可能小。那么,贪心策略就是,每次选择最小浓度的药水混合,直到药水浓度接近或等于W即可。以Pi,Pj两个最小药水混合为例,混合后的药水浓度(Pi * V+Pj * V)/ (2 * V) = (Pi+Pj)/2。所以判断条件为 (P1 + P2 + ... + Pk) / k <= W。 

其他

贪心法两个要点:

贪心选择性质:应用同一规划,将原问题变为一个相似的但规模更小的子问题

局部最优解:每一次都取得了最优解。比动态规划算法效率更高,占用内存更少,编写程序更简单。

代码链接

https://github.com/xierensong/learngit/blob/master/hdu/h2570.cpp

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值