公式

D - Pocky Game 解説 by maroonrk


DP をします. \(left[i][j]\) の値を,以下のように定めます.

  • 区間 \([i,j]\) を使ってゲームをする. ただし,\(a_i\) の初期値は自由に変更できるものとする. FirstLeft くんからゲームを開始する時,FirstLeft くんが勝てる \(a_i\) の最小値は?

同様に,\(right[i][j]\) の値を以下のように定めます.

  • 区間 \([i,j]\) を使ってゲームをする. ただし,\(a_j\) の初期値は自由に変更できるものとする. SecondRight くんからゲームを開始する時,SecondRight くんが勝てる \(a_j\) の最小値は?

すると,\(left[i][j],right[i][j]\) の値は,\(left[i][j-1],right[i+1][j]\) の値から求められるとわかります. 実際にプレイヤーが打つ手として,山から石を \(1\) 個取る,もしくは山の石を全部取る,だけを考えればよいので,遷移の式が計算できます.

よって,この問題は \(O(N^2)\) で解けます.

投稿日時:
最終更新: