[CF 1249F] Maximum Weight Subset

这是一篇关于如何利用树形动态规划解决在给定树结构和距离限制下,找到最大权值子集的问题。博客详细介绍了问题背景,思路以及代码实现,特别强调了由于数据规模小,允许使用较高复杂度的算法求解。
摘要由CSDN通过智能技术生成

题目

洛谷

题意

给定一棵含 n n n 个节点的树,每个节点含一个点权 a [ i ] a[i] a[i]。现在请你选出一些节点,使得这些节点的权值和最大并且这些节点中任意两个节点的距离都 > k >k >k。并输出这个最大的权值。

思路

一道似乎有很多时间复杂度做法的题?因为数据规模开的实在是太小了,只有 200 200 200,所以 n 3 , n 2 , n n^3,n^2,n n3,n2,n 都可以过, n 4 n^4 n4 的卡卡也能过?对于很多算法,还没来得及研究,这里讲一种较为常规的 n 3 n^3 n3 的树形 d p \tt dp dp 的做法。

d p [ x ] [ d ] dp[x][d] dp[x][d] 为在以 x x x 为根的子树中,选择满足 k k k 距离限制的最大点集选取的答案,并且点集中深度最小的点深度 ≥ d ≥d d。(这里的深度同样以 x x x 为根)

考虑转移:

  • d = = 0 d == 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值