AtCoder Beginner Contest 263 F問題 Tournament
問題
提出解答
問題の概要
人 , , 人 の 人からなるじゃんけん大会がある. このじゃんけん大会は次の形式で開催される.
- 参加者を人 , , 人 の順に横 列に並べる.
- 次のことを 回繰り返す ( 回目).
- に対して, 左から 人目と 人目がじゃんけんし, 負けた人は列から抜ける.
終了後, 人 がちょうど 回勝つと 円が得られる. ただし, である.
人が得られる賞金の総和の最大値を求めよ.
制約
解法
説明のため, 第 回戦いおける における人 人 の集団をブロック と呼ぶことにする. このとき, 各ブロックからは必ず1人ずつが勝ち上がる.
動的計画法で解く. 及び, に対して, を以下で定める.
- のときは .
- のときは 第 回終了後に人 が属するブロックにおいて, 人 が勝ち抜けた場合の残りの 人が得られる賞金の最大値
また, 及び, を
- 第 回戦ちょうどで第 回戦におけるブロック にいる 人が全滅で全滅する場合にこの 人が得られる賞金の総和の最大値
とする.
このとき, である. これを利用することにより, 第 回戦目に人 と対決することになる対戦相手が属するブロックの番号 (これは から一意に定まる) を としたとき,
となる.
この動的計画法により, 求めるべき最終解答は
である. 計算量も 時間で求められる.