[DP]树形DP

本文介绍了树形动态规划的基础概念,通过luogu题目实例(如二叉苹果树、选课等)展示常见思路和解法。从入门到提高,涵盖贪心策略、与树结构相关问题(直径、重心)以及特殊DP技巧(换根、生成树后DP),适合动态规划爱好者和竞赛选手提升技能。
摘要由CSDN通过智能技术生成

关于DP详见:[DP]合刊

定义

树形DP,即DP状态的转移和迭代在树上进行的一种动态规划。

经典例题

入门题

luogu P1352 没有上司的舞会 题解
简化题面后题意便是:给出一棵树,要求相邻两点不能同时取,问能取到的最多点数
类似于一本通 1301 / qzezoj 1613 大盗阿福
这两题唯一的区别就是一个是一颗树,一个是一个序列。
转移方程式也十分相似:

大盗阿福 f i , j = { f i − 1 , 0 + w i ( j = 1 ) max ⁡ ( f i − 1 , 1 , f i − 1 , 0 ) ( j = 0 ) f_{i,j}=\left\{ \begin{aligned} &f_{i-1,0}+w_i&(j=1)\\ &\max(f_{i-1,1},f_{i-1,0})&(j=0)\\ \end{aligned} \right. fi,j={fi1,0+wimax(fi1,1,fi1,0)(j=1)(j=0)
没有上司的舞会
f i , j = { ∑ f k , 0 ( j = 1 ) ∑ max ⁡ ( f k , 0 , f k , 1 ) ( j = 0 ) k ∈ i f_{i,j}=\left\{ \begin{aligned} &\sum f_{k,0} &(j=1)\\ &\sum \max(f_{k,0},f_{k,1}) &(j=0)\\ \end{aligned} \right. k\in i fi,j=fk,0max(fk,0,fk,1)(j=1)(j=0)ki
可以发现,树形DP和其他DP的区别仅仅在于形式不同,本质都是一样的
而树形DP和线性DP则更为相像,只有遍历的顺序不同。
当然也有在树上做其他DP的,
例如:
树上01背包:luogu P2015 二叉苹果树
树上分组背包:luogu P2014 [CTSC1997]选课
这两题也是很像的,唯一区别是一个是二叉树,一个是多叉树

常见思路

  1. 看起来可以模拟,又可以贪心,又在树上操作,99%是树形DP(by FLYing)
  2. 树的直径、重心
  3. 最大子树
  4. 树上最优值

常见解法

  1. 和其他DP相同
  2. 直径重心相关
  3. 由一张无向图生成最小生成树后DP
  4. 换根

luogu例题

luogu上的树形DP标签题

普及/提高-

普及+/提高

提高+/省选-

省选/NOI-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值