公式

M - 素早い高橋君 / Boost Takahashi 解説 by kyopro_friends


どのジムでもトレーニングにかかる時間は同じであるため、\(2\) 箇所以上のジムでトレーニングすることはありません。

証明 街 $X$ のジムでトレーニングを行い、その後街 $Y$ のジムでトレーニングを行っているとします。このとき、$Y$ でのトレーニングをやめ、その回数分だけ街 $X$ でのトレーニングを増やすと、「街 $1$ から街 $X$ への移動」「街 $Y$ から街 $N$ への移動」「トレーニング全体」にかかる時間は変わらず、「街 $X$ から街 $Y$ への移動」にかかる時間が減るため、全体でかかる時間が減ります。

よって「街 \(1\) から街 \(i\) まで行き、街 \(i\) で何度かトレーニングを行い、街 \(N\) へ行く」という移動方法のみを考慮すれば十分です。

\(1\) から街 \(i\) までの最短経路の長さを \(D_i\) 、街 \(i\) から街 \(N\) までの最短経路の長さを \(E_i\) とします。これらはダイクストラ法により \(O(M \log N)\) で求めることができます。

トレーニングを行う街 \(i\) を固定したとき、最適なトレーニング回数を考えます。トレーニング回数を \(X-1\) としたときの合計所要時間は \(f_i(X):=(D_i-T)+TX+\frac{E_i}{X}\) となります。相加相乗平均の関係から、\(X\) が正の実数を取るとき、\(f_i\)\(X=\sqrt{\frac{E_i}{T}}\) で最小値を取ります。\(f_i'\) が単調であることから、\(X\) が正の整数の場合、\(X=\left\lfloor\sqrt{\frac{E_i}{T}}\right\rfloor\) または \(X=\left\lceil\sqrt{\frac{E_i}{T}}\right\rceil\) で最小値を取ることがわかります。

以上から、トレーニングを行う街 \(i\) を固定したときの所要時間の最小値は \(O(1)\) で求めることができるため、どの街でトレーニングを行うかを全探索することで \(O(M\log N)\) でこの問題を解くことができます。

投稿日時:
最終更新: