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为必败态。

 

【Code】

 

posted @ 2014-11-25 19:54  NanoApe  阅读(49)  评论(0编辑  收藏
AmazingCounters.com