NIKKEI Programming Contest 2019-2 Task D. Shortest Path on a Line
Posted patt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NIKKEI Programming Contest 2019-2 Task D. Shortest Path on a Line相关的知识,希望对你有一定的参考价值。
Observations
①
从 $1$ 到 $N$ 的最短路一定是不走回头路的。所谓回头路是指从序号大的点走到序号小的点。
证明:首先,任意从 $1$ 到 $N$ 的路径的最后一步一定不是回头路。假设存在一条从 $1$ 到 $N$ 的最短路走了回头路,并设这条路最后一次回头是从 $u$ 到 $v$ 且从 $v$ 开始直到终点经过的点依次是 $v = v_0, v_1, dots v_k = N$。我们有 $v < u < N$,$v = v_0 < v_1 < v_2 <dots < v_k = N$ 且 $v_i e u$。设 $v_i < u$ 而 $v_{i+1} > u$ 则必然存在边 $(u, v_{i+1})$ 和边 $(v_i, v_{i+1})$ 长度相等,因此走 $u, v_{i+1}, dots, v_{k}$ 更优。矛盾!
为了便于描述,以下用 $(u, v, C)$ 表示连接 $u, v$,长为 $C$ 的无向边,用 $(u o v, C)$ 表示从 $u$ 到 $v$ 长为 $c$ 的有向边。
从上述证明可以得出推论:将原无向图按下述方式改造成有向图,从 $1$ 到 $N$ 的最短路长度不变:
以下设 $1 le u < v le N$。将原图中的无向边 $(u, v, C)$ 删除,加入有向边 $(u o v, C)$。
再任意加入长度非负的回头边。
考虑上述有向图的一种特殊情形:对于 $i = i, 2, dots, N$,加上长度为 $0$ 的回头边 $(i o i - 1, 0)$。
注意到此时对于一组有向边 $(s o t, C_i)$,$L_i le s < t le R_i$,只保留 $(L_i o R_i, C_i)$ 仍能保持从 $1$ 到 $N$ 的最短路长度不变。
以上是关于NIKKEI Programming Contest 2019-2 Task D. Shortest Path on a Line的主要内容,如果未能解决你的问题,请参考以下文章
[AtCoder] NIKKEI Programming Contest 2019 (暂缺F)
AtCoder全国統一プログラミング王決定戦予選/NIKKEI Programming Contest 2019
atcoder NIKKEI Programming Contest 2019 E - Weights on Vertices and Edges
NIKKEI Programming Contest 2019-2 Task D. Shortest Path on a Line