1 条题解

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

    题解

    思路

    沿一条从顶点 11 出发的路径依次读取顶点权值,并用贪心法匹配 BB:设已经匹配了前 jj 项,走到权值等于 Bj+1B_{j+1} 的顶点时令 jj 加一,否则保持不变。

    做法

    对顶点 uu 定义 dud_u 为所有从 11 到 uu 的路径中这一匹配长度的最小值;把简单路径改为允许重复顶点的路径不会改变题目的真假。若从 uu 走到相邻顶点 vv,新值只可能是 dud_u 或 du+1d_u+1,并且转移关于 dud_u 单调,因此只保留每个顶点的最小值就足够。

    把“不匹配下一项”的转移视为权值 00,把“恰好匹配下一项”的转移视为权值 11,即可从顶点 11 开始用双端队列进行 0-1 BFS;当距离改善时,权值为 00 的转移压入队首,权值为 11 的转移压入队尾。最终当且仅当 dN=Kd_N=K 时,所有从 11 到 NN 的路径都包含 BB 作为子序列。

    复杂度

    时间复杂度为 O(N+M)O(N+M),空间复杂度为 O(N+M)O(N+M)。

    • 1

    信息

    ID
    1671
    时间
    2000ms
    内存
    1024MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者