【专题】树形动态规划

AIDreamer

2017/5/30

树形DP就是状态之间的关系是树状结构的DP

树

【例题一】poj 2342 Anniversary party

题目大意

有一群人,每个人有一个欢乐值,这些人之间存在着一些上司和下属关系如A是B的上司,现在让你选出一些人满足这些人之间不存在直接的上司和下属关系并且使得总的欢乐值最大,问最大的欢乐值是多少。

分析

这种关系画出来是成树形的,节点代表一个人,节点上有一个值表示这个人的欢乐值,每个节点有两种状态:选或不选。这样我们的问题就转化成了:

在一颗点权树上选择一些节点满足任意两个节点不相邻使得被选节点的总权值最大并输出最大权值

我们可以通过观察发现:

1.如果某个节点不选,那么这个节点以下的分支可以单独作为一个新问题来求解

2.如果某个节点被选,那么这个节点的儿子一定不会选,那么这个节点的儿子们的分支可以作为一个新的问题来求解

这样就把问题不断地缩小直到能直接求解为止。

我们用 dp[i][1] dp[i][0] 分别表示节点i不选和不选的情况下以节点i为根的树得到的最大值

那么有

{ dp[i][1]=jidp[j][0]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值