公式

H - Music Game 解説 by akinyan


確率が \(1\) のボタンは後回しにして良いです。
今まで時間が \(x\) 秒かかっていて、 \(a\) 秒で確率 \(b(\neq1)\) のボタン \(A\) と、 \(c\) 秒で確率 \(d(\neq1)\) のボタン \(B\) を押すことを考えます。
ボタン \(A\) を押してから、ボタン \(B\) を押す場合は、\(\frac{\frac{x + a}{b} + c}{d} = \frac{x + a + bc}{bd}\) 秒です。 ボタン \(B\) を押してから、ボタン \(A\) を押す場合は、\(\frac{\frac{x + c}{d} + a}{b} = \frac{x + c + ad}{bd}\) 秒です。差は、 \(\frac{x + a + bc}{bd} - \frac{x + c + ad}{bd} = \frac{a + bc - c - ad}{bd} \) 秒で、ボタン \(A\) を押してからボタン \(B\) を押す方が早いと仮定すると、
\(\frac{a + bc - c - ad}{bd} \le 0 \Leftrightarrow \frac{a(1-d) + c(b - 1)}{bd} \le 0 \Leftrightarrow a(1-d) + c(b - 1) \le 0 \Leftrightarrow a(1-d) \le c(1-b) \Leftrightarrow \frac{a}{1 - b} \le \frac{c}{1-d} \)
が成り立ち、ボタンが二つあった時は、\(\frac{T_i}{1-\frac{A_i}{B_i}}\)が小さい方を前に押すと良いというのがわかるので、\(\frac{T_i}{1-\frac{A_i}{B_i}}\)でソートすれば良いことが分かります。
計算量は \(O(N \log N)\)で、この問題を解くことができました。

投稿日時:
最終更新: