1 条题解

  • 0
    @ 2026-9-9 9:22:58

    题解

    思路

    把每个箱子看成一个顶点,分别连出 i→Pii\to P_i 与 i→Qii\to Q_i。

    做法

    由于 P,QP,Q 都是排列,两张图的每个连通块都是一个有向环。红球只有位于 PP 图中包含 XX 的环上才可能到达 XX,蓝球也有同样的必要条件;若有球不满足它就直接无解。在包含 XX 的环上,找到沿有向边到 XX 距离最远的红球,从它到 XX(不含 XX)的路径记为序列 SS。只要依次操作完 SS,路径上的其他红球都会一并被带到 XX,因此它完整刻画了红球必须按顺序完成的操作;蓝球同理得到序列 TT。

    一组操作能同时完成两种颜色,当且仅当它同时以 S,TS,T 为子序列,所以最少操作数是 ∣S∣+∣T∣−LCS⁡(S,T)|S|+|T|-\operatorname{LCS}(S,T)。

    复杂度

    两个序列中的箱子编号都不重复,把 SS 中每个编号映射成其位置,再按 TT 的顺序取出这些位置,原 LCS 就变成该位置序列的最长严格上升子序列,可用二分维护最小结尾在 O(Nlog⁡N)O(N\log N) 时间内求出;建环、检查可达性和构造序列均为 O(N)O(N),空间复杂度为 O(N)O(N)。

    • 1

    信息

    ID
    1676
    时间
    3000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者