树形DP

1. 树形DP

树形DP,顾名思义,在树上进行的DP。

一般来说有两种DP方式:

  1. 根 → 叶:即根的子节点传递有用的信息给根,之后由根得出最优解的过程。
  2. 叶 → 根:通常我们可以选择根节点(有根),或任选某顶点(无根)dfs遍历一遍树,再用换根的方式将信息传递到所有节点,过程中利用每条边来父子交换转移信息。

总而言之,一般用方法二。

2. 没有上司的舞会

如果定义 dpidp_i 表示 ii 号为根的最优解,发现做不出来。

定义 dpi,0/1dp_{i,0/1} 表示在第 ii 个点上选/不选的最优解。

则有:

dpi,1=dpu,0dp_{i,1}=\sum dp_{u,0} dpi,0=max{dpu,0,dpu,1}dp_{i,0}=\sum \max\{dp_{u,0}, dp_{u,1}\}

其中 u\text{u} 表示儿子。

3. 最大子树和

就是求树上最大连通块。

对于每棵子树,如果他的子树 xx 的和为负数就不用加了。

即:dpi=(dpu×[dpu>0])dp_i=\sum (dp_u\times[dp_u>0])[x][x] 是判断。

posted @ 2024-04-06 11:15  sLMxf  阅读(33)  评论(0)    收藏  举报  来源