树形dp-luogu1352 没有上司的舞会

 树形dp

实现     

     动态规划在树形结构上的实现:任选一个点作为根节点,从而定义出每个节点的深度和每个子树的根。设计算法时,一般以节点由深到浅(子树由小到大)的顺序作为dp阶段,通常采用递归实现。

状态表示

      第一维通常是节点编号(代表以该节点为根的子树)。对于每个节点x,先递归在它的每个子节点上进行dp,在回溯时,从子节点向x进行状态转移。

例题(luogu1352)

思路

      以节点编号作为状态的第一维。我们需要在每棵子树递归完成时,分别保存根节点参加或不参加时整棵子树的最大快乐值,以满足最优子结构。《算法竞赛进阶指南》

代码实现

扫描二维码关注公众号,回复: 2052644 查看本文章

总结下重要操作

1.熟练掌握vector(记得头文件)

2.一开始先找根,从根开始递归



猜你喜欢

转载自blog.csdn.net/zi_wan/article/details/80152983
今日推荐