动态规划专题(二)——树形DP
前言
\(DP\)这东西真的是博大精深啊......
简介
树形\(DP\),顾名思义,就是在树上操作的\(DP\),一般可以用\(f_i\)表示以编号为\(i\)的节点为根的子树中的最优解。
转移的时候一般都将信息由子节点转移到父亲节点,也就是将信息从下往上转移。
因此,一般树形\(DP\)都会采用 递归 的形式。
典例1:树上背包
树形\(DP\)中有一种比较经典的题型:树上背包。
其实它的思想与普通背包差不多,关键在于它玄学的时间复杂度。
很多看似\(O(n^3)\)会\(T\)飞(实际上也的确是这样)的题目,可能你用\(O(n^3)\)的树上背包却能跑过(时间复杂度我也不会证),而且不是因为数据水。
可参考一道例题:【洛谷1273】有线电视网。
典例2:带负权树的直径
普通的树的直径可以用\(BFS\)来求,但如果是带负权的,\(BFS\)就会被卡炸(可惜我之前不知道)。
于是就用上了树形\(DP\)。
可参考一道例题:【杂题】访问计划。
几道例题
好吧,\(DP\)好像也没什么东西可讲,这样介绍得还是不够具体。干脆直接看例题来理解一下吧。
第一道例题: 【51nod1299】监狱逃离
这题是一道挺有意思的树形\(DP\)题,我们可以考虑用\(f\)数组来记录每一个节点的状态:完全封死、可以从这个节点到达叶子节点、有犯人可以到达该节点,然后就不难统计出答案了。
第二道例题: 【BZOJ4033】[HAOI2015] 树上染色
比较经典的树形\(DP\)题。这道题最值得注意的地方不是\(DP\)过程,而是注意在一棵有\(n\)个节点的树上将\(m\)个节点染成黑色与将\(n-m\)个节点染成黑色其实是等价的,不加上这个优化就会\(TLE\)。
第三道例题: 【BZOJ1040】[ZJOI2008] 骑士
一道恶心的基环外向树\(DP\),应该是比较模板的吧。
动态规划专题(二)——树形DP的更多相关文章
- DP专题·四(树形dp)
1.poj 115 TELE 题意:一个树型网络上有n个结点,1~n-m为信号传送器,n-m+1~n为观众,当信号传送给观众后,观众会付费观看,每铺设一条道路需要一定费用.现在求以1为根,使得收到观众 ...
- POJ2342 Anniversary party(动态规划)(树形DP)
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6635 Accepted: 3827 ...
- 【DP_树形DP专题】题单总结
转载自 http://blog.csdn.net/woshi250hua/article/details/7644959#t2 题单:http://vjudge.net/contest/123963# ...
- 动态规划——树形dp
动态规划作为一种求解最优方案的思想,和递归.二分.贪心等基础的思想一样,其实都融入到了很多数论.图论.数据结构等具体的算法当中,那么这篇文章,我们就讨论将图论中的树结构和动态规划的结合——树形dp. ...
- 【转】【DP_树形DP专辑】【9月9最新更新】【from zeroclock's blog】
树,一种十分优美的数据结构,因为它本身就具有的递归性,所以它和子树见能相互传递很多信息,还因为它作为被限制的图在上面可进行的操作更多,所以各种用于不同地方的树都出现了,二叉树.三叉树.静态搜索树.AV ...
- 树形dp总结
转自 http://blog.csdn.net/angon823 介绍 1.什么是树型动态规划 顾名思义,树型动态规划就是在"树"的数据结构上的动态规划,平时作的动态规划都是线性的 ...
- 树形 DP 总结
树形 DP 总结 本文转自:http://blog.csdn.net/angon823/article/details/52334548 介绍 1.什么是树型动态规划 顾名思义,树型动态规划就是在“树 ...
- 树形$dp$学习笔记
今天学习了树形\(dp\),一开始浏览各大\(blog\),发现都\(TM\)是题,连个入门的\(blog\)都没有,体验极差.所以我立志要写一篇可以让初学树形\(dp\)的童鞋快速入门. 树形\(d ...
- 树形DP(超详细!!!)
一.概念 1.什么是树型动态规划 树型动态规划就是在“树”的数据结构上的动态规划,平时作的动态规划都是线性的或者是建立在图上的,线性的动态规划有二种方向既向前和向后,相应的线性的动态规划有二种方法既顺 ...
随机推荐
- 对各种lca算法的理解
1.RMQ+ST 首先注意这个算法的要素:结点编号,dfs序,结点深度. 首先dfs,求出dfs序,同时求出每个结点的深度.然后st算法,维护深度最小的结点编号(dfs序也可以,因为他们俩可以互相转换 ...
- spark 机器学习 朴素贝叶斯 实现(二)
已知10月份10-22日网球场地,会员打球情况通过朴素贝叶斯算法,预测23,24号是否适合打网球.结果,日期,天气 温度 风速结果(0否,1是)天气(0晴天,1阴天,2下雨)温度(0热,1舒适,2冷) ...
- 使用java画一张海报
PS: 没找到合适的海报背景,就随便找了一张,使用技术都是相同的 1. 添加依赖 这俩其实跟本章节的核心技术没有关系,是为了获取QQ昵称和QQ头像而引入的. <!-- jsoup --> ...
- Multi-catch parameters are not allowed for source level below 1.7 报错处理
有可能是你项目右键build-path里面的这个东西 在项目上右键properties->project Facets->修改右侧的version 保持一致 还有一个就是Window里面 ...
- HDU1729 Stone Game
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1729 思路:理解错题目了,以为SG模板直接套就行了.后来队友说了那个ci是不断变化的.那么每次可以放的石头 ...
- Codeforces Round #499 (Div. 1)部分题解(B,C,D)
Codeforces Round #499 (Div. 1) 这场本来想和同学一起打\(\rm virtual\ contest\)的,结果有事耽搁了,之后又陆陆续续写了些,就综合起来发一篇题解. B ...
- gitlab web端使用
https://jenkins.io/zh/doc/pipeline/tour/getting-started/ http://www.cnblogs.com/cheng95/p/6542036.ht ...
- js中的一些问题
1.当有其他的库也是使用的是"$",则可以这样写jquery代码: var jQ = jQuery.noConflict(); //把jQuery中的$赋给jQ变量 (functi ...
- 什么是SG?+SG模板
先,定义一下 状态Position P 先手必败 N x先手必胜 操作方法: 反向转移 相同状态 不同位置 的一对 相当于无 对于ICG游戏,我们可以将游戏中每一个可能发生的局面表示为一个点.并且若存 ...
- python入门之sys模块、shutil模块
sys模块 import sys sys.version 返回python的版本 sys.argv 返回一个以脚本名,和传入的参数作为元素的列表 sys.path 返回一个以当前代码文件路径,pyth ...