AtCoder Beginner Contest 258 D問題 Trophy
問題
提出解答
問題の概要
個のステージからなるゲームがある. 番目のステージはストーリー映像が 分, ゲームパートが 分からなる.
各ステージをクリアするためには, ストーリー映像を見てゲームをクリアしなければならないが, 以前にクリアしたことのあるステージについてはストーリー映像をスキップできる.
また, 番目のステージをプレイするためには, 番目のステージ全てをクリアしていなければならない.
合計 回ステージクリアするためには最低何分必要か? ただし, 同じステージを複数回クリアした場合はその分だけカウントされる.
制約
解法
まず, だった場合, 回クリアした時点で, 番目のステージがプレイ可能になっていることはない. 従って, 番目のステージは最初からなかったとしても問題ない. つまり, と仮定しても良い.
クリアしたステージの種類数に着目して全探索する. 回クリアしたとき, 1回以上クリアしたステージが 番目のステージだったとする. このような状況下において 回クリアするのに必要な最短時間を考える. 場合分けの仮定から 番目のステージは 回はクリアしなければならない. そして, 残りの 回についてはゲームパートが最も短いステージでクリアすればよい.
よって, 1回以上クリアしたステージが 番目のステージであるような場合における最短時間 は
である.
この を求めるにあたり, の順に求めることにすると,
であるから, 各 を 時間で計算できる.
クリアしたステージの種類数に着目して全探索する方針であったので, 求めるべき答え は,
である. 以上から, 時間で処理できた.
ちなみに, を達成する において, だったとすると, としたとき, だから, となってしまう. これは であることに矛盾してしまう. よって, であることがわかる.
このことから,
でも求められる.