当前位置:网站首页>最大化平均值
最大化平均值
2022-07-29 16:43:00 【51CTO】
有n个物品的重量和价值分别是Wi和Vi,从中选出K个物品使得单位重量的价值最大。
最大化平均值的经典,一般最先想到可能的方法是按照单位价值排序,从大到小的进行选取,但是这个方法对于下面一组例子来说:
n=3; k=2; (w,v)=(2,2),(5,3),(2,1);则可能得出的结果是5/7=0.714,所以这个方法是要排除的,那么如何想到最大化平均值这个方向呢?实际上,对于这个问题我们可以使用二分搜索法解决,我们定义:
条件get(mid):=可以选择使得单位重量的价值不小于mid
因此,原问题就变成了求满足get(mid)的最大mid,那么如何判断get(mid)是否可行?假设我们选了某个物品的集合S()那么它们的单位重量的价值是;定义sum(v)为v的值的和
sum(Vi(i属于S))/sum(Wi(i属于S));因此就变成了判断是否存在mid满足以下条件:sum(Vi(i属于S))/sum(Wi(i属于S))>=mid;变形得到:sum(Vi-mid*Wi)>=0,因此对此式的值进行贪心选取,进一步求sum(Vi-mid*Wi)从大到小排列中前k个的和不小于零,每次判断的复杂度为O(n*log(n))
实现:
边栏推荐
猜你喜欢
随机推荐
TensorFlow Serving high-performance machine learning model of service system
贪心(1)区间完全覆盖问题
解析正则表达式(一)
【WeChat Mini Program】Zero Basic Learning | Mini Program Grammar
[Server Storage Data Recovery] A data recovery case of a RAID 5 crash caused by the failure of a certain model of Huawei OceanStor storage RAID 5 hard disk and the failure to synchronize data with the
知识图谱构建全流程
Database Project 01 Documentation: Database Skills Needed for Software Testing
什么时候使用UserCF,什么时候使用ItemCF?
[Network] LAN technology MSTP
LinkedList 5-141. The circular linked list
Flutter dynamic | Fair server new version features
新建和编辑共用一个表单,编辑之后新建,form表单resetFields失效
量化初级 -- akshare获得股票代码,最简策略
【翻译】设备管理器—英特尔网卡属性设置高级选项的功能
特殊的类——集合与泛型(C#)
This article penetrates the architecture design and cluster construction of the distributed storage system Ceph (hands-on)
Exchange the STP/network knowledge
召回 i2i
Sorting and searching binary search method
参与造谣传谣,华为宣布开除五名员工









