树上dp学习笔记

树形DP是一种解决树状结构问题的动态规划方法,通常采用由叶到根的后根遍历,子节点信息传递给父节点。以P1352没有上司的舞会为例,该问题可以转换为隐性树,通过dp数组记录每个节点的最大快乐指数,分别计算包含和不包含节点自身的最大值。从叶子节点开始递归计算,最终得到根节点的最大快乐指数。
摘要由CSDN通过智能技术生成

树形DP:

线性dp面对的问题一般为线性序列或图。

树上dp是一种在树状结构上进行dp的一种,各个阶段呈现树状关系的时候也可以采用树形dp。

树形dp过程:

1.如果问题是一棵隐性树(即不以树为直接背景),则需要将问题转化为一棵显性树,并存储各阶段的树状联系。

2.在树的数据结构上进行dp,但其求解方式与线性dp有所不同:

计算顺序不同。线性dp有两种方向,顺推与逆推;而树形dp也有两个方向。由根到叶的先根遍历,但不常用,一般我们采用由叶到根的后根遍历,即子节点将有用信息传给父节点,逐层上推,最终由根得出最优解。

计算方式不同.   线性的采用传统迭代,树形是用记忆化,用递归。

上例题:

P1352 没有上司的舞会:

题目描述

某大学有N个职员,编号为1~N。他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri,但是呢,如果某个职员的上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值