「DP Rec.」[APIO2010] 巡逻

[APIO2010] 巡逻

Description

在这里插入图片描述
在这里插入图片描述

Solution

首先,只要大家认真看题,都会发现一个极其重要的条件:

1 ≤ k ≤ 2 1\le k\le 2 1k2

因此我们需要先分类讨论 k k k 的取值。

Subtask 1

这种做法其实非常容易想到,在加了一条边之后,这棵树就变成了一棵基环树。如何使这条边减少的费用最多呢?

自然是找树上距离最长的两点(也就是树的直径),并在它们之间加一条边,答案即为 2 × ( n − 1 ) − a n s + 1 2 \times (n-1)-{\rm ans}+1 2×(n1)ans+1

那如何才能求树的直径呢?

两种方法:

两次 BFS / 树形 DP
  • 两次 BFS 求树的直径的步骤:

    1. 从任意一点 A A A 出发,找到与该点距离最长的一个点 B B B,
    2. 从点 B B B 出发,找到与点 B B B 距离最长的点 C C C ,
    3. 线段 B C BC BC 即为所求。

    证明如下:
    假设 B B B 不是直径的一个端点, C D CD CD 为树的直径。
    ① 当点 A A A 是直径上的点时:

    如图,
    ∵ A B > A D , \because AB>AD, AB>AD,
    ∴ A C + A B > A C + A D , \therefore AC+AB>AC+AD, AC+AB>AC+AD,
    ∴ A C + A B > C D . \therefore AC+AB>CD. AC+AB>CD.
    这与 C D CD CD 是树的直径矛盾。

    ② 当点 A A A 不是直径上的点且 A B AB AB C D CD CD 间有公共结点 E E E 时:

    如图,
    ∵ A E + E B > A E + E D , \because AE+EB>AE+ED, AE+EB>AE+ED,
    ∴ E B > E D . \therefore EB>ED. EB>ED.
    ∴ C E + E B > C E + E D , \therefore CE+EB>CE+ED, CE+EB>CE

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值