创世纪
算法#
观察到把每个
问题转化为
在一个基环树上, 选择一个点后, 其儿子节点至少有一个不能选, 求最大选点个数
对于森林中的每一棵基环树
容易想到找环, 对于环上每一点, 问题转化为树上的上述问题
显然是树形 dp
令
有
这是好求的
环上处理#
环上有
个点, 每个点有贡献 , 求选点最大贡献和, 其中, 不能选择相邻的点
令
钦定第一个必选, 按链的方式做一次
再钦定第一个不选, 按链的方式做一次
断环处理#
断掉环上一条边, 基环树变成一棵树
考虑解决掉删除这一条边的问题
- 使用这一条边
- 不使用这条边
代码#
略
总结#
基环树 + 常见树上 dp + 环上 dp
基环树一般都是一大堆 树上 / 图上知识串起来
这个树形 dp 算比较典的, 但我最初推出来的还是错的
注意消除删边影响这一类题, 通常是跑两次
内向树不好处理, 考虑建反向边
注意内外向树的判定
vivo 50
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】