学习笔记 Anti-Nim

Anti-Nim

地上有n堆石子(每堆石子数量小于10000),

每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取完,不能不取。

每次只能从一堆里取。谁取走最后一刻谁输

假如甲是先手,且告诉你这n堆石子的数量,他想知道是否存在先手必胜的策略

定义使人快乐

孤单堆:一堆火柴仅有1根火柴
充裕堆:一堆火柴有大于1根火柴
T态:异或和为0 
S态:异或和不为0

T2态:T态当中充裕堆数>=2
T0态:T态当中充裕堆数=0

S0态:S态当中充裕堆数=0
S1态:S态当中充裕堆数=1
S2态:S态当中充裕堆数>=2

注意 不存在T1态
因为只有一个充裕堆时 其最高位对应>1 不会被异或消掉
也就是充裕堆会影响高位

Nim相关定理

定理1 对于任意一个S态 总能合理合法地使其转化为T态

定理2 对于任意一个T态 无论怎么取 都是转化为S态

Anti-Nim相关定理

S0态必败 T0态必胜

这个就比较好想了。。。。。。


S1态 只要方法正确 必胜

两个操作

1.孤单堆是奇数时 那么就拿走充裕堆

2.孤单堆是偶数时 那么就把充裕堆拿成孤单堆


S2态不可以一次性变成T0态

两个充裕堆你怎么同时取? ? ?


S2态 只要方法正确 可以一次性变成T2态

由上可得

S2态不可以一次性变成T0态并且不存在T1态

那么S2态只能一次性变成T2态


T2态只可以只变为S2态或者S1态

还是 两个充裕堆你怎么同时取? ? ?


S2态 只要方法正确 必胜

1)S2态 先手就把TA变为T2态

由于T2态只可以只变为S2态或者S1态

如果后手将T2态变为S2态 重复1)

如果后手将T2态变为S1态 必胜


T2态必败

此时也就是先手面临楼上 2) 的情况 必败

综上
必胜态:T0,S1,S2
必败态:S0,T2

经过观察得出最终定理

1.每一堆石子只有一个时 且异或和为0

2.存在至少一堆石子多于一个时 且异或和不为0

此时满足上述一个条件 先手必胜

SJ定理

定义Anti-SG游戏

决策集合为空时 当前者胜
其余同SG游戏

先手胜利当且仅当

1.游戏SG函数不为0且某个单一游戏SG值大于1
2.游戏SG函数为0且任意单一游戏SG值=1

得证

例题

【bzoj1022】 \(or\) 【luogu4279】

posted @ 2020-10-01 11:32  tcswuzb  阅读(370)  评论(0编辑  收藏  举报