欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S42907.29-7 据守要隘
29-7 据守要隘
据守要隘
圆码遴选完了,但Zero的防御节点还在——废墟里有据点和通道,像一张网。
"要守。"CC说,"每条通道至少一端有哨兵。"
"最少要几个哨兵?"
"树形DP。"你说,"把据点看成树,选最少的节点,覆盖所有边。"
"覆盖?"
"对。"你说,"每条边连接两个据点。如果其中一个有哨兵,这条通道就被守住了。"
"那选叶子?"
"不一定。"你说,"选叶子可以守住一条边,但可能不是最优。"
"咋算?"
":不放哨兵时,子树最少哨兵数。"你说,":放哨兵时,子树最少哨兵数。"
"不放哨兵——它的所有儿子必须放。"
"对。"你说,"。"
"放哨兵——儿子可放可不放,取min。"
"对。"你说,"。"
你开始写。DFS遍历树,自底向上DP。
"根节点。"你说,"如果根放哨兵,。"
"如果根不放——"
"根不能不放。"你说,"根没有父亲,如果它不放,没人守它连出去的边。"
"所以根必须放?"
"不一定。"你说,"如果根只有一个儿子,且儿子放哨兵,根连出去的边也被守了。"
"但根不是叶子吗?"
"根没有父节点,但有子节点。"你说,"根不放哨兵,它的所有子节点必须放。"
"所以答案=。"
"对。"
CC扛着数据刀,站在一个据点门口——那是通往Zero核心最后的关卡。
"我守这。"她说。
"你一个人?"
"我够。"她说,"这条通道,我守住了。"
"但还有其他通道——"
"你们去守别的。"她说,"分散开。每条通道至少一端有人。"
Echo的投影分成了许多份——每份守一个节点。
"我也守。"她说,"我的投影可以同时在多个点。"
"那你累吗?"
"累。"她说,"但值得。"
你看着那些发光的节点——有些亮了(有哨兵),有些暗了(没有)。亮着的连成一片,像一张网,把Zero困在里面。
"网织好了。"你说,"下一步。"
"下一步?"CC问。
"丈量扰动。"你说,"算我们走不同路的代价。"
题目描述
给定一棵树,选最少数量的节点,使得每条边至少有一个端点被选。
输入格式
。然后条边。
输出格式
最少节点数。
输入样例
3
1 2 3
输出样例
0
提示
- 树形DP。
- :不选时子树最少节点数。
- :选时子树最少节点数。
- 。
- 。
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |