贪心与DP——P1987摇钱树

题目:P1987 摇钱树

\(\text{蒟蒻在DP之路上求索着}\)

这道题我一开始竟然觉得是区间DP

思路

看起来这道题我们可以以任何顺序来砍树,这就牵扯到先后砍树哪一种更优.如果我们要暴力的话,那就是枚举树的全排列,然后寻找最优解.可是如果我们不枚举,有没有办法通过一些方法判断出哪一棵树先砍呢?

还记得国王游戏吗,在那一题中我们讨论了邻项交换法来寻找贪心策略.我们不妨来尝试一下.

假设一棵树上的总钱数是\(A\),每天掉落\(a\)个,另一棵树是\(B\)\(b\).我们先按照\(A,B\)的顺序在时间\(x\)\(x+1\)砍掉.这时我们将会得到的收益为\(A-ax+B-b(x+1)[1]\).而我们交换\(AB\),得到的收益是\(A-a(x+1)+B-bx[2]\),如果先砍\(A\)更优,那么我们要求\([1]\)式-\([2]\)式要大于0.经过整理,我们发现此时\(a-b>0\),也就是\(a>b\).现在我们可以得出结论了:先砍倒掉钱速度快的树更划算.因此我们要按照掉落速度从大到小排序.

但是我们只能砍掉K棵树,也就是说我们上文提到的\(B\)不一定能砍掉,然而我们的交换是在两棵树都能砍掉的前提下进行的,因此要有所取舍.这就是一个容量是K的01背包问题.设\(f[j]\)表示砍掉\(i\)棵树的最大值,那么我们不难得出:
\[ f[j]=max(f[j],f[j-1]+max(0,A[i]-a[i]\times (j-1)))(1\le i\le n,1\le j\le max(i,K)) \]
这样问题就解决了.因此贪心和DP有时也能有很好的结合.
当然了:

\(\textit{多测不清空,爆零两行泪}\)

转载于:https://www.cnblogs.com/i-cookie/p/11597376.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值