Google Code Jam 2019 Round1C : Robot Programming Strategy
問題. Robot Programming Strategy
人でじゃんけんによるトーナメント戦を行う.相手は 人いて 番目の人はどんな対戦相手でも文字列 で表される戦略にしたがって手を出す.初手は の1番目の手を出して,引き分けなら2番目と勝敗がつくまでじゃんけんをする(引き分けの回数が の長さを越したら1番目から繰り返す).引き分けが 回超えたらランダムに勝者を決める.
対戦相手 人の手が事前に分かるときに,どんな組合せでも優勝することができるような戦略を求めよ.そのような戦略が存在しない場合は "IMPOSSIBLE" と出力せよ.ただし,その戦略が表す文字列の長さは 1 以上 500 以下とする.
制約: ,
解法
どんな組合せでも優勝できるような戦略が存在するということは,戦略 によってすべての対戦相手に勝つことができるということである.したがって, 人の対戦相手と並列に最大で 500 回までじゃんけんを行いながら戦略を決めることを考える.
回目のじゃんけんで相手の手の種類が 3 種類あるときは,どのような手を出して勝つことができないので答えは "IMPOSSIBLE" である.相手の手の種類が 1 種類のときは,その手に勝つ手を 回目で選ぶことによって優勝することができる.この場合はこれ以降じゃんけんをする必要はない.最後に,相手の手の種類が 2 種類のときは,引き分けとなる手を選択することによって 回目のじゃんけんに進むことができる.このとき,出した手によって勝つことができる相手が少なくとも 1 人いるが,そのような対戦者は 回目以降で対戦者として考慮する必要はない.このように戦略を決めて引き分けが 500 回を超えたなら答えは "IMPOSSIBLE" となる.
計算時間:
某アイドルグループのじゃんけん大会かな