mini notes

競技プログラミングの解法メモを残していきます。

ARC025 C - ウサギとカメ

問題:C - ウサギとカメ

解答:Submission #13491153 - AtCoder Regular Contest 025

解法:N ≦ 2500、M ≦ 3000 なので全点ダイクストラやっても間に合いそう。(TLEも7秒)

目的地を固定して、目的地を始点とするダイクストラをする。すると目的地から各中継点への最短距離が分かる。これを配列gに格納する。
さらにカメのスタート地点lefを固定して、g[lef] / t < g[rig] / r、すなわちr * g[lef] < t * g[rig] なるウサギのスタート地点rigの個数を求める。
これは、gをソートして尺取り法で求めることができる。

要注意なのは、カメがウサギより速い場合は、rig < lef となる場合があり、その際lef = rigをとれないため、rigの個数はn - rig - 1となる。(これに気づかず自力ACならず…)