树形dp
顾名思义
在树上dp
有人就说了
普通的dp都不会还让我在树上dp!!
可是
一般的树形dp没有别的dp水那么深
当然了
除了一些毒瘤题之外
树形dp一般是从下往上
也就是从叶节点到根节点
按这个顺序更新信息
因为叶节点的信息可以初始化
当然也会有从根节点向叶节点更新的
碰到这种题目再说
树形dp和递归分不开
这就需要掌握dfs的精髓
不大懂的话找个代码开调试看下它怎么跑的就好了
我个人一般建无向图
dfs的时候记录下前驱就好
有向图也没有关系
因为一般是从下往上遍历的
至于树形背包
树形背包==分组背包
做题多了见过的模型多了就看得出来了
下面的选课比较经典,入门题
例题
Luogu 1352 没有上司的舞会
HDU 1520 Anniversary party
这两个是一道题着
只是下面那个多组数据
题目中还没说清楚
好坑我
这是最基础的一类树形dp
选了父亲节点就不能选儿子节点
也就是相邻的两个点不能同时选
方程很简单
为当前节点, 为遍历到的节点
第一个方程就是儿子选不选都可以
第二个方程是儿子不能选,因为当前节点已经选了
进阶版
Luogu 2607 骑士
这题在上一个方程的基础上加了点东西
基环树与删边
当然主要是拼脑子
具体来这看,挺详细的了——点这里
换换类型
Luogu 2014 选课
每个节点只有在选了它的父节点之后才能选
题解——点这里
Luogu 2015 二叉苹果树
要删去
条边,要使剩下的节点权值最大
题解——点这里
Luogu 1273 有线电视网
题面好难说啊自己看去吧( • ̀ω•́ )✧
题解——点这里
最小点覆盖问题
每个点能覆盖附近的两条边,用最少的点把这张图覆盖起来
Luogu 2016 战略游戏
诶,
这个好像才是入门的
麻烦不改了
如果当前节点不放置士兵,那么它的子节点必须全部放置士兵
如果当前节点放置士兵,它的子节点选不选就无所谓了
//当前节点不放
//放
和第一种类型是不是有点像
双倍经验
CF 767C Garland(洛谷)
给出一颗树,问能否删除两条边使这三部分的点权和相等
题解——点这里
HDU 2196 Computer
求树上每个点能走的最长路
HDU 4514 湫湫系列故事——设计风景线
这俩题基本一样
第一个题解——点这里
第二个题解——点这里
先这样
有东西再更( ̄▽ ̄)/