Algorithm 图论:树节点的最大子集,使得最小距离为d
给定Algorithm 图论:树节点的最大子集,使得最小距离为d,algorithm,optimization,tree,dynamic-programming,graph-theory,Algorithm,Optimization,Tree,Dynamic Programming,Graph Theory,给定n顶点上的树。选择最大数量的节点,以确保所选节点中没有两个节点的距离小于d。Output是最大节点数。这里的n和d可以达到10^5。如何在线性或拟线性时间内求解 是:) 如果取根,则最优值为1加上较低d级子树的最优值之和 否则,它是根的子项的值之和(不带+1) 因此,您应该采用自下而上的方法(或带记忆的递归方法)计算节点子树的最佳值。如果节点是叶,则值为1。否则,使用上面写的规则 您应该尝试只计算每个节点的值一次,并且每个节点的值仅用于其父节点及其第d个祖父母,因此您的复杂性为O(n)请
n
顶点上的树。选择最大数量的节点,以确保所选节点中没有两个节点的距离小于d
。Output是最大节点数。这里的n
和d
可以达到10^5
。如何在线性或拟线性时间内求解 是:)
- 如果取根,则最优值为1加上较低d级子树的最优值之和李>
- 否则,它是根的子项的值之和(不带+1)李>
您应该尝试只计算每个节点的值一次,并且每个节点的值仅用于其父节点及其第d个祖父母,因此您的复杂性为
O(n)
请告诉我们答案是否有效,以便下一个用户可以使用它!不。如果我们标记某个节点的所有子节点,那么这些子节点可能在远处