题目中告诉了我们计算机的三个属性- -核心数量,闹钟频率和价格,我们要帮助 johnny 赚取最大利益,大家都知道 计算最大利益大概率与dp有关,所以,我们要用dp计算最大利益。
之后,我们要考虑一个问题- -如何将他们表示出来。当然,可以用集合表示当然可行,可数据范围太大了!用集合很容易爆,所以用数组是我们的不二之选
但随之又会引出一个问题–要用数组,我们就要把闹钟频率消掉。
题目中只 讲到了 他们的闹钟频率不少于f[j] 所以,我们可以使用从大到小排序算法!!
知道了这点以后 这题就不难了
买入时:dp[i]=dp[i-c[i]]-v[i]; 计算时从大到小更新**
卖出时:dp[i]=dp[i+c[i]]+v[i]; 计算时从大到小更新**
(dp从0开始)
答案可能是dp[0~sum]
可以买的和顾客需要的数量可能不相同
所以 我们需要将dp数组的初始化更改成dp[0]=0 ,其他f[1~N]=-INF;
最后输出
1 个赞