pku2486 treedp

本文介绍了一种使用动态规划解决在给定带权树上行走特定步数以获得最大权值的问题的方法。通过定义状态转移方程,并采用深度优先搜索遍历树形结构,实现了O(n*m^2)的时间复杂度。

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

我说过我是dp菜,这题纠结了好久。。

题目大意:

  给你一颗树和树上的节点的权值,求走m步能得到的最大权值,每条边能重复走。

简略题解:

  我用的是背包(因为只对这个比较熟悉),dfs路径时,最终的结果可能经过当前节点,也可能不经过。

  可以这样设:

  f[i,j,0]表示i号节点为根走j步回到当前节点的最大权值

  f[i,j,1]表示i号节点为根走j步不回到当前节点的最大权值

  好了,那么max(f[1,m,1],f[1,m,0])就是结果

  然后就dfs一遍,复杂度n*m^2

附程序:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值