题目: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

贪心与DP——P1987摇钱树相关推荐

  1. 树形dp ---- gym101667 A(贪心 + 树形dp + 两个dp方程组维护)

    题目链接 题目大意: 就是一棵5e35e35e3的树,可以选择一些点,放上基站,如果uuu上的基站价值为ddd,那么距离uuu小于等于ddd的点都会被覆盖,问使得整棵树被覆盖需要的最小价值. 解题思路 ...

  2. 【贪心 和 DP + 卖股票】LeetCode 122. Best Time to Buy and Sell Stock II

    LeetCode 122. Best Time to Buy and Sell Stock II Solution1:我的答案 贪心和DP傻傻分不清! class Solution { public: ...

  3. 2019.04.20【NOIP提高组】模拟 B 组 观察题目+堆(?)+最大匹配+贪心、DP

    文章目录 0 压缩后缀数组 1 新年礼物 2 聚会 3 辽哥游戏 立阳二中.清华医学系谢俞 0 压缩后缀数组 据传是水题 当f[i]=i时,原数组s的i位置一定是偶数,那么s[i]=a[对应的位置]* ...

  4. $bzoj1060-ZJOI2007$ 时态同步 贪心 树形$dp$

    题面描述 小\(Q\)在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字\(1,2,3-.\)进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路 ...

  5. 牛客 - 树上求和(贪心+树形dp)

    题目链接:点击查看 题目大意:给出一棵树,现在要求给每条边赋上 0 ~ n - 1 的值,且不重复,规定每条路径 ( u , v ) 的权值和为其简单路径上的边权之和,而整棵树的权值和为 所有简单路径 ...

  6. 【LeetCode - 122】买卖股票的最佳时机 II(贪心 或 dp)

    题目链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/ 给定一个数组,它的第 i 个元素是一支给定股票第 i ...

  7. 搜索,贪心,DP,三者的区别和联系

    1. 贪心是一种特殊的动态规划,动态规划的本质是独立的子问题,而贪心则是每次可以找到最优的独立子问题. 贪心和动归不是互斥的,而是包含的,贪心更快,但约束更强,适应范围更小.动归和bfs的关系也是一样 ...

  8. 【贪心 和 DP + 卖股票】LeetCode 121. Best Time to Buy and Sell Stock

    LeetCode 121. Best Time to Buy and Sell Stock Solution1:我的答案 动态规划和贪心不要区分的那么明显嘛~~~ class Solution { p ...

  9. 【贪心 和 DP】LeetCode 55. Jump Game

    LeetCode 55. Jump Game 貌似一直就没做几个贪心的题,是时候好好学习一个了.. 参考网址:http://www.cnblogs.com/grandyang/p/4371526.ht ...

最新文章

  1. 【神经网络】(4) 卷积神经网络(CNN),自定义网络,案例:彩色图像10分类
  2. 独家 | 一文读懂如何用深度学习实现网络安全
  3. 编译Flink项目的时候遇到cannot find symbol   symbol:   variable Time
  4. 【TensorRT】将 PyTorch 转化为可部署的 TensorRT
  5. php 接口缓存,php写的一个缓存接口demo,兼容redis和memcache
  6. 自学python在家怎么上班_【经验分享】转行如何自学Python并且找到工作,分享自己心得...
  7. Oracle 游标使用全解(转)
  8. (转)shiro权限框架详解03-shiro介绍
  9. java 2和java有什么区别
  10. android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog
  11. MySQL-快速入门(17)MySQL Proxy,读写分离,负载均衡
  12. JMX实现远程服务器Tomcat系统监控之二
  13. ubuntu20.04系统安装u盘制作方法
  14. 【华为机试真题详解】统计射击比赛成绩
  15. Python中使用print函数的三种输出方式
  16. 【python】数字验证常用操作
  17. windows,远程开机,远程唤醒(WOL,Wake-on-LAN),只在刚关机一段时间内可以实现,时间长了就无法实现
  18. 【阅读笔记】这本书可以让你戒烟
  19. linux里的文件服务
  20. iOS - 融云即时通讯的简单使用

热门文章

  1. java中的IO操作总结
  2. 题目敌兵布阵-------线段树(单点修改查询,区间修改查询)
  3. Back-Propagation Neural Network BP反向传播网络算法
  4. 代码详解:如何用Python快速制作美观、炫酷且有深度的图表
  5. win7 X64位安装hp激光打印机驱动
  6. Hexo图片不显示问题
  7. 【Elasticsearch】全文搜索
  8. 公钥、私钥、证书、加密、解密、加签、验签
  9. 计算机导航种植牙的优势,种牙也能计算机导航
  10. Vue 高阶组件和 mixins