我们给出了两个数组M
(金钱)和E
(经验)的整数,每个大小最多为50。鲍勃完成工作后,发生了两件事:
(让TE
成为Bob 0
TE
)增加E[i]
TE*M[i]
如果他以最佳顺序完成工作,鲍勃可以获得的最大利润是多少?
For any i we know:
1 <= E[i] <= 10^5
1 <= M[i] <= 10
Example:
M[] = { 20, 30, 100 }
E[] = { 1, 1, 6 }
Answer: 880 = job 3-1-2 = 6*100 + 7*20 + 8*30 = 980
答案 0 :(得分:1)
我认为问题可以通过贪心算法(这是DP的一个特例)来解决,如下所述:
Exp/Money
按降序排列作业Money
按升序排序作业然后,排序的作业序列是作业的顺序,产生最佳解决方案。
我的推理如下:比率Exp/Money
可以解释为您可以用1个钱购买多少Exp ,所以如果我们选择比率更高的工作总是更好首先,这会增加以后工作的经验。
在平局案例中,选择奖金较少的工作,因为这会使得奖金较高的工作可以在以后乘以更大的经验因素。
例如:
E = {2,1,6,1}
M = {40,20,100,10}
Sorted job = { job3, job4, job2, job1}
= 6*100 + 7*10 + 8*20 + 10*40 = 1230