1 条题解

  • 0
    @ 2026-9-3 10:38:37

    题解

    思路推导

    先从顶点 11 做 BFS 得到最短距离 dd。沿一条满足 du<dvd_u<d_v 的边前进时距离严格增大,因此这些边构成按距离分层的有向无环关系。

    设 fuf_u 为从 uu 出发按规则能够到达的最小距离。若边 u→vu\to v 满足 dv≤dud_v\le d_u,经过它就使用了唯一一次非上升机会,之后能得到的最小值至少包含 dvd_v;若 dv>dud_v>d_u,还没有使用这次机会,可以继续采用 fvf_v。

    做法

    按 dd 从大到小处理顶点,初始令 fu=duf_u=d_u。枚举 uu 的每条出边:当 dv>dud_v>d_u 时用 fvf_v 更新;否则用 dvd_v 更新。因为第一类边总指向更大的距离,处理 uu 时所需的 fvf_v 已经计算完成。

    正确性证明

    从 uu 出发的合法路径要么停在 uu,要么第一步走向某个 vv。若 dv≤dud_v\le d_u,这一步已经使用唯一一次非上升边,之后只能沿距离严格增加的边,因此路径上最小距离就是不大于 dvd_v 的候选,转移取 dvd_v 足以覆盖最优值。若 dv>dud_v>d_u,规则状态没有改变,后续最优值正是 fvf_v。算法枚举全部第一步并与停留方案取最小,所以得到准确的 fuf_u。

    严格上升边只指向更大距离,逆距离顺序满足所有依赖,故归纳可知每个状态都正确。

    复杂度分析

    每个测试用例的时间复杂度为 O(n+m)O(n+m),空间复杂度为 O(n+m)O(n+m)。

    • 1

    信息

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