1 条题解

  • 0
    @ 2025-11-19 22:26:17

    核心思想

    使用反向 BFS + 贪心选择的方法:

    从终点 n 出发,反向标记所有能到达终点的点

    从起点 1 出发,按照字典序优先选择 'a'

    检测是否进入无法到达终点的环

    算法步骤

    构建反向图并标记可达点

    对于每个位置 i,如果 i + aᵢ 在 [1, n] 范围内,则建立反向边

    如果 i + bᵢ 在 [1, n] 范围内,也建立反向边

    从终点 n 开始 BFS,标记所有能到达 n 的点

    贪心构造路径

    从起点 1 开始,优先尝试选择 'a'

    如果选择 'a' 能到达已标记的点,则选择 'a'

    否则尝试选择 'b'

    如果两种选择都不可行,则无解

    环检测

    在构造路径时,如果访问到已经访问过的点,说明存在环

    如果环中的点都能到达终点,则路径有限

    如果环中有不能到达终点的点,则输出 "Infinity!"

    复杂度分析

    时间复杂度:O(n)

    构建反向图:O(n)

    反向 BFS:O(n)

    贪心构造路径:O(n)

    空间复杂度:O(n)

    存储图结构:O(n)

    标记数组:O(n)

    关键点说明

    反向 BFS:从终点出发标记可达点,避免在正向前进时走入死胡同

    字典序贪心:在每一步优先选择 'a',保证字典序最小

    环检测:通过 visited 数组检测是否进入循环,结合可达性判断输出 "Infinity!"

    • 1

    信息

    ID
    5519
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者