GAME-24 problem D E F
D-并列Nim
考虑选择和,因为分别可以选不超过 B 个,但是组合起来。
考虑单个,是经典问题 A mod (B + 1)
于是把这个经典问题组合起来即可
E-受限制Nim 1
因为说了是仅偶数,所以考虑必败态,并不是 全 0,而是 1 0 0 0 0 0
仅有一个 1,所以必败态的 SG 就是 异或和 是 1
F-项链 1
还是一样的,考虑如果一个字符串状态 S 可以到达必败态,那么 S 就是必胜,反之如果 一个 S 的所有可达态都是 必胜,那么就是 必败态。
可能需要证明一下复杂度,这个我不太清楚如何证明。
namespace XK {
void solve() {
INT N; string S; rd(N, S);
unordered_map<string, bool> sg;
auto dfs = [&](auto&&dfs, string s) -> bool {
if(sg.find(s) == sg.end()) {
rep(i, sz(s) - 1) if(s[i] != s[i + 1]) {
if(dfs(dfs, s.substr(0, i) + s.substr(i + 2, sz(s) - i - 2)) == 0) {
sg[s] = 1;
break;
}
}
}
return sg[s];
};
bool ans = dfs(dfs, S);
// cerr << "?" << endl;
wt(ans ? "Alice" : "Bob");
}
};