做项目求最大利润

题目:

输入: 正数数组costs、正数数组profits、正数K、正数M


costs[i]表示i号项目的花费

profits[i]表示i号项目在扣除花费之后还能挣到的钱(利润)

K表示你只能串行的(挨个做)最多做k个项目

M表示你初始的资金

说明: 每做完一个项目,马上获得的收益,可以支持你去做下一个项目。不能并行的做项目。

输出:你最后获得的最大钱数。

思路:

项目

只能串行做项目,并且最大k个

思路1:创建小根堆(花费)大根堆(利润)

思路2 :放入小根堆后,把小于M资金的放到大根堆里面

思路3:从大根堆拿出利益最高的执行,并且累计资金

思路4:从新走思路2的判断,将小根堆花费小于M的花费放到大根堆 并且再从大根堆拿出一个利益最大的(就这样K次)

总结:按花费小根堆,每次拿出都是能支付的起的,并且放大根堆,大根堆出一次,出最大利益的,然后再出小根堆,出所有花费的起的,然后再出一个大根堆利益最多的,这样每次执行的都是可以买的起并且利益最多的。

猜你喜欢

转载自blog.csdn.net/u010191034/article/details/121525353