博弈论

SG函数:

\(sg[x]=mex(sg[x-son1],sg[x-son2],sg[x-sonx]...)\)
,如果某个局面的sg[x]>0,必胜;sg[x]=0,必败。
因为这是类似倒推的过程,如果能够到达x的局面里有必败(==0)的局面,那么mex(x)>0,所以x一定可以一步决策到达必胜局面(对手必败);如果都是必胜局面(>0),那么无论x局面怎么选都是必败。

应用到nim里面,如果若干堆石子,取出的数必须是一个集合,那么每一堆用来异或的元素就是sg值。

如果博弈论不会,可以怎么蒙分:

【1】递推:采用倒推:
假如有2堆石子拿,从f[x][y]-->f[a][b],如果f[x][y]必败,那么f[a][b]必胜;反之亦然。

【2】蒙答案:
比如对于数据比较大,考虑%什么东西是不是等效的。
比如取石子游戏里面n堆石子,每堆最多取x个,求最后谁赢,我们就可以%(x+1),这样就是经典nim了。
比如多校8的,%(x+y),可以大大简化问题。

posted on 2022-10-14 19:03  HZOI-曹蓉  阅读(47)  评论(0)    收藏  举报