动态规划专题(二)——树形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.什么是树型动态规划 树型动态规划就是在“树”的数据结构上的动态规划,平时作的动态规划都是线性的或者是建立在图上的,线性的动态规划有二种方向既向前和向后,相应的线性的动态规划有二种方法既顺 ...
随机推荐
- Python中的矩阵、多维数组:Numpy
Numpy 是Python中科学计算的核心库.它提供一个高性能多维数据对象,以及操作这个对象的工具.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对 ...
- 洛谷P1762 偶数
P1762 偶数 题目描述 给定一个正整数n,请输出杨辉三角形前n行的偶数个数对1000003取模后的结果. 输入输出格式 输入格式: 一个数 输出格式: 结果 输入输出样例 输入样例#1: 复制 6 ...
- kuangbin专题十二 HDU1029 Ignatius and the Princess IV (水题)
Ignatius and the Princess IV Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32767 K ( ...
- php静态方法和属性
静态方法和属性由static关键字定义 静态方法和属性不用实例化也可以直接访问,如 self::test(),self::tt 类实例化后可以访问静态方法,但是不可以访问静态属性 声明类属性或方法为静 ...
- Poj 2096 (dp求期望 入门)
/ dp求期望的题. 题意:一个软件有s个子系统,会产生n种bug. 某人一天发现一个bug,这个bug属于某种bug,发生在某个子系统中. 求找到所有的n种bug,且每个子系统都找到bug,这样所要 ...
- java——变量、jvm内存划分
基本数据变量类型:byte.short.int.long.float.double.boolean.char eg : int i = 1; 引用数据变量类型:数组.类.接口.枚举.注解 eg : S ...
- onCreateOptionsMenu
onCreateOptionsMenu----只在Activity创建时调用一次!之后不会再被调用! onPrepareOptionsMenu----每次display menu之前,都會调用该方法, ...
- HDU 4622 Reincarnation Hash解法详解
今天想学字符串hash是怎么弄的.就看到了这题模板题 http://acm.hdu.edu.cn/showproblem.php?pid=4622 刚开始当然不懂啦,然后就上网搜解法.很多都是什么后缀 ...
- Java面向对象_对象内存分析—值传递和引用传递
对象内存分析,我一直学的比较模糊,今天抽空整理一下,希望能理清. 先说一下,内存分析从何而来,这对于我们这些刚接触java的人来说都比较模糊,就从new关键字说起吧. new关键字表示创建一个对象或者 ...
- 迷你迅雷+SqlServer2008r2下载
迷你迅雷下载 http://down.sandai.net/mini/MiniThunderInstaller3.1.1.58.exe SqlServer 2008r2下载 ed2k://|file| ...