ほぼ静的な計画法

競技プログラミングで解いた問題の解法とコードを晒していくページ。ややマイナーなC♯。

AOJ 0034 (Railway Lines : 鉄道路線)

【問題】

https://onlinejudge.u-aizu.ac.jp/problems/0034

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0034

【解説】

すれ違う地点の位置を求めればよい。

区間1側の終端駅から出発する列車をA、区間10側の終端駅から出発する列車をBとする。両者がすれ違うとは、両者の進んだ時間が等しいということなので、速さを\(v\)、距離を\(s\)、全体の長さを\(L\)とすると、 $$ \frac{s_A}{v_A} = \frac{L-s_A}{v_B} $$ として表せる。

あとは、\(s_A\)について解いていくと $$ \begin{align} {s_A}{v_B} & ={(L-s_A)}{v_A} \\{s_A}{v_B}+{s_A}{v_A} & ={L}{v_A} \\{s_A}{(v_A+v_B)} & ={L}{v_A} \\{s_A} & = L \frac{v_A}{v_A+v_B} \end{align} $$ となる。(AとBが時間当たりに進む距離の比は、\(v_A:v_B\)となるため、当たり前っちゃ当たり前。)

上記の値を計算し、その値が何番目の区間に位置するかを判定してあげればよい。

【コード】