往模型上靠。。
普通 NIM 是:所有堆都到终态为负。这里是:任意一堆移动到终态为胜。
那么在新问题里,我们要避免走到任意一个可以移动到终态的状态。(否则下一步就输了)
我们定义这样的状态的 sg=0,同时避免从这些状态转移,这样就和普通的 NIM 靠上了。
//}/* .................................................................................................................................. */
const int N = int(1e2) + 9;
int sg[N][N];
int mex(set<int>& H){
REP(i, H.size()+1) if (!CTN(H, i)) return i;
assert(0);
return -1;
}
void init(){
REP_2(i, j, N, N){
if (!i || !j || i == j) sg[i][j] = -1;
else{
set<int> H;
REP_1(k, i) H.insert(sg[i-k][j]);
REP_1(k, j) H.insert(sg[i][j-k]);
REP_1(k, min(i, j)) H.insert(sg[i-k][j-k]);
sg[i][j] = mex(H);
}
}
}
bool win(){
int SG = 0;
Rush{
int x, y; RD(x, y); if (!x && !y) return false;
if (sg[x][y] == -1) return true;
SG ^= sg[x][y];
}
return SG;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("/users/xiaodao/desktop/Exercise/in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
#endif
init(); Rush puts(win() ? "^o^" : "T_T");
}
http://www.lydsy.com/JudgeOnline/problem.php?id=1457




Alca
Amber
Belleve Invis
Chensiting123
Edward_mj
Fotile96
Hlworld
Kuangbin
Liyaos
Lwins
LYPenny
Mato 完整版
Mikeni2006
Mzry
Nagatsuki
Neko13
Oneplus
Rukata
Seter
Sevenkplus
Sevenzero
Shirleycrow
Vfleaking
wangzhpp
Watashi
WJMZBMR
Wywcgs
XadillaX
Yangzhe
三途川玉子
About.me
Vijos
