题目描述
一共
输入格式
第一行一个数
接下来是
接下来 H
表示第
输出格式
对于每局游戏,输出一行。如果 dongdong 存在必胜策略则输出 -_-
否则输出 =_=
(注意输出的都是半角符号,即三个符号 ASCII 码分别为 45,61,95)。
输入输出样例 #1
输入 #1
1 |
|
输出 #1
1 |
|
说明/提示
对于
对于
题解
显然,终止状态是所有硬币都正面向上。我们可以将整个游戏分解为将每个反面朝上的硬币翻到正面朝上的过程。
提出一个定理:整个局面的 SG 函数等于各个反面朝上的硬币单独存在时的 SG 函数异或和。换言之,整个局面可以按照反面向上的硬币分解即为若干个游戏,其中每个游戏只有一个反面朝上的硬币。例如:
1 |
|
可以被分解为这两个游戏
1 |
|
这一分解的合法性可用数学归纳法证明:
首先考虑一维的问题。我们给每个一维的局面分配一个分数,从左到右的第
个硬币若为 H
计 0 分,若为T
计分。例如 HHTHT
局面的分数为。每次翻转的整个联通块中必然最右侧的硬币是从 T
翻转到H
,翻转后整个局面的分数必然减少。我们可以证明分数为 0 的局面
HHHHH
满足定理。我们可以证明若分数为
的局面都满足定理,则分数为 的局面满足定理。 对于二维的问题,可以简单地扩展分数计算规则。
对于每个硬币的 SG 函数值,进行打表找规律:
SG 函数值最大可达