As Soon As Possible

2 secs 1024 MB
magurofly's icon magurofly

想定解1 O((M+N)logMlogN)O((M + N) \log M \log N) ダイクストラ法

前処理として、バスを (A,B)(A, B) ごとにまとめ、それぞれを (S,T)(S, T) の昇順でソートし、 TT について後ろからの累積 min\min をとります。

ダイクストラ法の遷移の際に、現在の時刻よりも SS が大きい最小のバスを二分探索します。

提出

想定解2 O(MlogM)O(M \log M) ダイクストラ法(みさわさんより)

ダイクストラ法の遷移の際に、今見ているバスが乗れるバスかを判定します。

提出

想定解3 O(MlogM)O(M \log M) DP(H20さんより)

バスを SS の昇順でソートします。

11 の到着時刻を 00 、それ以外の街の到着時刻を \infty で初期化します。

それぞれのバスについて、街 AA の到着時刻が SS 以下のとき、街 BB の到着時刻を TT 以下にします。

提出