1. 树形DP
树形DP,顾名思义,在树上进行的DP。
一般来说有两种DP方式:
- 根 → 叶:即根的子节点传递有用的信息给根,之后由根得出最优解的过程。
- 叶 → 根:通常我们可以选择根节点(有根),或任选某顶点(无根)dfs遍历一遍树,再用换根的方式将信息传递到所有节点,过程中利用每条边来父子交换转移信息。
总而言之,一般用方法二。
如果定义 dpi 表示 i 号为根的最优解,发现做不出来。
定义 dpi,0/1 表示在第 i 个点上选/不选的最优解。
则有:
dpi,1=∑dpu,0
dpi,0=∑max{dpu,0,dpu,1}
其中 u 表示儿子。
就是求树上最大连通块。
对于每棵子树,如果他的子树 x 的和为负数就不用加了。
即:dpi=∑(dpu×[dpu>0])。[x] 是判断。