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

 树形dp

实现     

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

状态表示

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

例题(luogu1352)

思路

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

代码实现

总结下重要操作

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

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



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值