2 条题解

  • 1
    @ 2026-10-4 19:36:36

    再见 LCT

    • 1
      @ 2026-9-25 22:28:09

      G

      本题首先转化,如果两路径不交(无公共点),则必然可以存在一条边,使得这条边可以分割选择的路径。

      不难发现,这很有前途。于是枚举断边 (u,v)(u, v)。uu 是 vv 的父亲。依题,我们只关心选择的路径长度,所以又发现长度大的路径存在,则长度比他小的路径必然存在。故转化成直径问题。

      在 vv 的子树中找直径(不必经过 vv),在 subtree(1) − subtree(v)\mathcal{subtree}(1)\ - \ \mathcal{subtree}(v) 的连通块中找直径("-" 是差集的意思)。

      前者是简单的。重点考虑后者。

      你不会以为要 DS 吧。

      先分类,直径有以下 33 种情况。

      • 过 uu
      • 路径 lca 位于 uu 的子树
      • 其他情况

      第一种情况,容易发现,维护 gig_{i} 表示 ii 出发,若第一步走到 ii 父亲,他的最长能走几步?转移时容易的。自证不难。

      第二种情况,记录 did_{i} 表示 路径 lca 在 ii 子树的路径长度最大值。转移依旧简单。注意判断防止非法。

      第三种情况,维护 hih_{i} 表示 ii 子树外,最长的路径,转移仍旧简单。

      hi=max⁡{hfa,h_i = \max\{h_{fa}, 经过 fafa 但不经过 ii 的最长路径}\}。

      最后,答案是依旧简单的.

      建议降下去 蓝。

      我不是红磷!

      • 1

      信息

      ID
      2755
      时间
      2000ms
      内存
      256MiB
      难度
      9
      标签
      (无)
      递交数
      13
      已通过
      4
      上传者