1 条题解

  • 0
    @ 2026-11-2 11:01:20

    GTA 6 联机网络重组

    算法思路

    一次操作只能增加或删除一条边,代价都是 11。题目要求的不是让 AA 与 BB 的边集相同,而是让两者的连通块划分相同,因此只看哪些边破坏了目标划分。

    在 BB 中跨越两个不同连通块的 AA 边,在最终图里不可能存在,必须全部删除。

    删掉这些边以后,AA 的每个连通块都整体落在某个 BB 连通块内部。若某个 BB 连通块内还有 pp 个互不相连的 AA 碎片,补 p−1p-1 条边就能把它们接成一个整体。

    于是先对 BB 建并查集,得到每个顶点在 BB 中的连通块,记块数为 kBk_{B};再扫 AA 的每条边,两端在 BB 中不同块就计入答案并跳过,否则并入第二个并查集;最后统计第二个并查集的根节点个数 PP(孤立点各算一块),输出跨块边数加上 P−kBP-k_{B}。

    这里的 P−kB=∑C(pC−1)P-k_{B}=\sum_{C}(p_{C}-1),其中 pCp_{C} 是 BB 的连通块 CC 内 AA 的碎片个数。

    正确性证明

    最终图中任意两点连通当且仅当它们在 BB 中连通。若 AA 中存在边 (u,v)(u,v) 而 u,vu,v 在 BB 中不连通,这条边在最终图中必须不存在,只能删除;不同的跨块边互不相同,所以删除次数不少于跨块边数 DD。

    删掉跨块边后,设第 ii 个 BB 连通块内 AA 的碎片数为 pip_{i},有 ∑pi=P\sum p_{i}=P。最终第 ii 个 BB 连通块必须连通,而一次加边最多把两个碎片合并,所以至少要 pi−1p_{i}-1 次加边,合计不少于 P−kBP-k_{B}。

    这样的下界可以取到:先删除全部 DD 条跨块边,此时同一 BB 连通块内的两个不同碎片之间没有 AA 的边,任取两个碎片中的顶点 xx 与 yy,它们不相邻,添加 (x,y)(x,y) 合法;每加一次碎片数减一,加 pi−1p_{i}-1 次后该块内所有 AA 顶点连通。对所有 BB 连通块重复该过程,总操作数恰为 D+P−kBD+P-k_{B}。

    因此最少操作次数就是 D+P−kBD+P-k_{B}。

    复杂度分析

    两次并查集,时间复杂度 O((n+m1+m2)α(n))O((n+m_{1}+m_{2})\alpha(n)),统计 PP 与 kBk_{B} 各需 O(n)O(n)。空间复杂度 O(n+m1+m2)O(n+m_{1}+m_{2})。答案在 2×1052\times 10^{5} 量级,使用 64 位整数更稳妥。

    信息

    ID
    730
    时间
    1000ms
    内存
    256MiB
    题目 Rating
    1700
    标签
    递交数
    19
    已通过
    11
    上传者