2025.1.24

树上背包

DESTRUCTION 3,2,1

09 年论文现在才学也是没救了。

对于重量为 1 的,直接每次枚举 size 就可以做到 n2,证明考虑一个点对只会在 lca 出有一个贡献。

考虑重量是 vi,定义 vi 的上界是 V

暴力做是 nV2 的,实在是不优美。

考虑更改更新顺序为从顶到底可以做到 nV,具体实现有两种。

考虑推到 dfs 序上,设 dpi,j 表示当前到 i 点,重量是 j,转移考虑刷表,枚举这个点选不选考虑贡献到 i+1 或者 i+sz(这个点不选不能选子树)。

也可以不用 dfs 序,考虑依次做每个儿子,最后和自己取 max。

缺点是空间复杂度没在压了。

P

posted @   5k_sync_closer  阅读(67)  评论(4编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示