BZOJ-1022 小约翰的游戏
Nim取石子问题。。。
设C=x1 xor x2 xor x3 xor …… xor xn,则当C=0时此状态为T,否则为S
我们称石堆中大于1的为充裕堆,等于1的为独立堆
若取到最后的人赢的话:
T为必败态,S为必胜态
必胜策略:S态时选取最多石子的堆i,并取走xi xor C个石子【易证取完后状态为T
若取到最后的人输的话:
我们把局势分成S0,S1,S2,T0,T2
S0,S1表示有0,1个充裕堆的状态,S2表示有>=2个充裕堆的状态,T0,T2同理。
则我们可以发现
-
S0为必败态,T0为必胜态
-
S1时,若单独堆为奇数个,则我们把充裕堆全部取走,转成S0;若偶数个,则将充裕堆取剩一个,转成S0。可得S1为必胜态
-
S2可转成T2,而T2只可转成S1,S2,所以S2也是必胜态,T2是必败态。
所以T0,S1,S2为必胜态,S0,T2为必败态。