C++树形DP入门题——Anniversary Party

这篇博客介绍了一道涉及树形动态规划的C++编程题——Anniversary Party。文章首先指出没有树形DP基础的读者可能难以理解,并建议先学习相关知识。题目描述了一个奇特的公司,其中员工在其直接上级在场时不会参加派对,目标是求最大开心指数。文章通过分析问题,提出了状态转移方程,并给出了代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

题目大意

分析

代码

后记


前言

发现这个月快完了还没写几篇博客,于是来水水博客hhh

这篇博客如果没有树形DP的基础比较难看懂,所以可以先看看这篇博客

那么我们就直接切入正题看题面吧。


题目大意

在一个很强大的公司,有n个职员,每个职员都有唯一一个上司。这些职员在自己那唯一一个上司在时是不会来参加派对的。每个职员有一个开心指数。求来了的职员的最大开心指数。(数据以0 0结束)

(很奇葩的公司吧)

input

7
1
1
1
1
1
1
1
1 3
2 3
6 4
7 4
4 5
3 5
0 0

output

5


分析

还是以DP的最优子结构的特性来考虑。

我们可以设f_{ij},i表示从叶子节点开始走到了第i个节点,j表示这个节点(职员)参加还是没有参加,用0,1表示。

那么我们就可以得出状态转移方程:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值