树形背包上下界优化复杂度证明

众所周知,一般的树形背包复杂度为 O(n2),而限制背包上界为 k 的树形背包复杂度为 O(nk)。下面给出证明。

对于一般树形背包复杂度为 O(n2) 的证明#

考虑每个点对只会在 lca 处被统计一次,复杂度显然为 O(n2)

对于限定上界为 k 树形背包复杂度为 O(nk) 的证明#

考虑每个点 x 向上合并的过程,在 x 所在集合大小没超过 k 之前,显然最多统计 O(k) 次,对于所有点则是 O(nk) 次;在集合大小超过 k 之后,每次加入一个点必然会永久弹出一个点,并付出 O(k) 的额外代价,而由于每个点最多被弹出一次,额外代价也最多是 O(nk) 的,所以总复杂度显然为 O(nk)

作者:Hypercube07

出处:https://www.cnblogs.com/Hypercube07/p/17774619.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Hypercube07  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示