题目:
在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排。游戏由两个人进行,两人轮流操作,每次操作者都可以从最左或最右的一堆中取出若干颗石子,可以将那一堆全部取掉,但不能不取,不能操作的人就输了。 Orez问:对于任意给出一个初始一个局面,是否存在先手必胜策略。
思路:
看到题毫无思路,难以找到获胜策略,看了一个大牛的题解才慢慢理解。确实是好题,又一次感受到博弈论的博大精深。
首先,设在区间[i, j]左边放l[i][j](可以为0)个石子后(区间内石子保持原状),产生的局面为先手必败局面,r[i][j]就是在右边放;设A[i]为第i堆石子个数。
接下来证明l[i][j]与(r[i][j]同理)是唯一的:
1)若存在两或以上个l[i][j],则从某一个必定可一步转移到另一个,矛盾,故最多只有一个;
2)若没有l[i][j],那么必胜态只可能通过拿右边的石子转移到某个必败态,由于此时左边石子可以是任意个,右边石子数固定,于是必有右边的某一个石子数对应了多种必败态,这些必败态只有左边的石子数不同,与1矛盾。
最后我们考虑l[i][j]的求法,设L = l[i][j-1], R = r[i][j-1], x = A[j],大力分类讨论:

本文介绍了ZJOI 2009年的取石子游戏,这是一个基于博弈论的双人游戏。玩家轮流从左右两端取石子,先无法取石子的玩家输。文章探讨了如何确定是否存在先手必胜策略,并通过递归和分类讨论来求解必败态,最终给出代码实现。
最低0.47元/天 解锁文章
1108

被折叠的 条评论
为什么被折叠?



