ゲーム問題を解決する手段
問題
- Nim
- Grundy数
- yukicoder No.669 対決!!! 飲み比べ 解説
- yukicoder No.103 素因数ゲーム リターンズ
- yukicoder No.361 門松ゲーム2
- yukicoder No.102 トランプを奪え
- yukicoder No.153 石の山
- CF459 MADMAX 解説
- Codeforces Round #399 E. Game of Stones
- CF432 Arpa and a game with Mojtaba 解説
- AGC017 Game on Tree 解説
- HOJ EEEEndless gamEEEE 解説
- HR Bob's Game
- ARC087 Prefix-free Game 解説
- ARC091 Strange Nim 解説1 解説2
- yukicoder No.715 集合と二人ゲーム 解説
- HR Banana Game
- [難] ARC 038 C.茶碗と豆
- yukicoder No.819 Enjapma game
- 後退解析、バックトラック
- 偶奇を用いた勝ち負け
- 相手の真似をする必勝法
- ミニマックス法
【発展的話題】Misere Nim
最後に石を取ると負けとしたNimのこと。よく分かる解説。
http://sigma425.hatenablog.com/entry/2014/12/07/132702
http://winjii.hatenablog.com/entry/2016/05/29/143653
簡単には、
- 積まれている石の数が2以上のものがあれば普通のNim
- 全部1の場合は山の偶奇によって勝敗が分かる
実装
int N; cin >> N; int g = 0, ma = 0; rep(j, 0, N) { int s; cin >> s; g ^= s; ma = max(ma, s); } if (ma == 1) { if (N % 2) printf("Second\n"); else printf("First\n"); } else { if (g != 0) printf("First\n"); else printf("Second\n"); }