DP K
K - Stones
対戦ゲームの読み切り問題
盤面を定義域とするDP
盤面は整数1つで表現できる
「その盤面を渡された人が勝つか負けるか」を値とする
取るものが残ってなくて負ける終盤から逆にたどる
時間軸反転
code:python
def solve(N, K, AS):
AS.sort()
MIN = AS0
table = 0 * (K + 1)
for i in range(MIN):
tablei = -1 # LOSE
for i in range(MIN, K + 1):
for a in AS:
if tablei - a == -1:
tablei = 1
break
else:
tablei = -1
# debug(": table", table)
if tableK == 1:
return "First"
else:
return "Second"
https://atcoder.jp/contests/dp/submissions/15052948