考察に時間をかけすぎた
問題概要
文字 'A' と 'B' のみからなる長さ の文字列 が与えられる (先頭の文字を 0 文字目とする)。各 について、次の問に答えよ。
Alice と Bob が交互に、以下の操作を合計 回行う。Alice が先手である。なお、最初は集合 は空集合であるとする。
「好きな非負整数 を選び、集合 を に置き換える」
回の操作が終了した状態で として、 = 'A' ならば Alice の勝ち、 = 'B' ならば Bob の勝ちとする。
双方最善を尽くした場合に、どちらが勝つかを求めよ。
制約
考えたこと
最初に思ったことは、最後の手を打てる方がかなり有利だということ。というのも、その場にとどまるか、前へ進ませるかを選べるからだ。
しかし、ラストターンの直前の mex が m だったとして、m + 1, m + 2 などを仕込んでおくことで、ラストターンの人が m を入れたとしても、入れなかったとしても、ラストターンでない人が勝てる場合もあることに気がついた。
そして単純に、
- Alice は、毎ターン、 = 'B' であるような を集合 に入れていくのがいい
- Bob は、毎ターン、 = 'A' であるような を集合 に入れていくのがいい
ということがわかった。どんな順番で を入れていくのがいいのか、最初はよくわからなかったけど、結局添字が小さい方から に入れていけばよいとなった。
あとはシミュレーションしていけば OK