题目描述 甲,乙两个人玩Nim取石子游戏。 nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取完,不能不取。每次只能从一堆里取。最后没石子可取的人就输了。假如甲是先手,且告诉你这n堆石子的数量,他想知道是否存在先手必胜的策略 ...
分类:
其他好文 时间:
2019-09-12 23:46:19
阅读次数:
105
题目: 其实就是在nim游戏基础上添加了一次可以不取的机会。 多堆石子可以看成多个游戏,它们起点的sg值异或起来就是整个游戏的sg值,若sg值为1,则先手必胜,为0,则后手必胜。 关键在于怎么求sg值:可以打表找规律->对游戏局面进行动态dfs连边,再dfs一遍求sg值(也就是求mex值) 细节:d ...
分类:
其他好文 时间:
2019-08-23 22:20:38
阅读次数:
128
题目描述 甲,乙两个人玩Nim取石子游戏。 nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取完,不能不取。每次只能从一堆里取。最后没石子可取的人就输了。假如甲是先手,且告诉你这n堆石子的数量,他想知道是否存在先手必胜的策略 ...
分类:
其他好文 时间:
2019-08-16 00:34:54
阅读次数:
87
题目分析 关于Nim游戏,当所有堆异或起来为0时,必输,否则有必胜方法。 所以,问题就转化成了在线询问树上一条道路上点权的异或值并支持修改。 在树上的询问不好搞,所以我们使用bfs序将原树转化成一段区间。 对于一次查询,也就转化成了一段区间的异或和。 考虑一个点会影响哪个区间,已知,就是访问到它的时 ...
分类:
其他好文 时间:
2019-07-30 00:16:11
阅读次数:
106
话说它是(简单?)博弈论的基础的说? 这道模板还是很好打的,只要把所有数异或起来,ans如果为0就是必败局面,否则是必胜局面。 知道这个结论就很好打出来了啦!! 1 #include<bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 int ...
分类:
其他好文 时间:
2019-07-27 10:08:06
阅读次数:
137
leecode练习 292、Nim游戏 题目要求: 你和你的朋友,两个人一起玩 “Nim 游戏”,桌子上有一堆石头,每次你们轮流拿掉 1 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏 示例: ...
分类:
其他好文 时间:
2019-05-21 20:51:48
阅读次数:
147
你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: (脑筋急转弯) ...
分类:
其他好文 时间:
2019-05-13 09:16:00
阅读次数:
138
$umm$可能之后会写个博弈论总结然后就直接把这个复制粘贴上去就把这个删了 但因为还没学完所以先随便写个$NIM$游戏总结趴$QAQ$ 首先最基础的$NIM$游戏:有$n$堆石子,每次可以从一堆中取若干个,求最后谁胜利 这种有个结论,是说当开局所有数异或起来不为0时先手必胜 证明在这里写了下,懒得再 ...
分类:
其他好文 时间:
2019-05-11 00:06:52
阅读次数:
156
nim游戏: n堆石子, 两个人轮流操作, 每次任选一非空堆拿走至少一颗石子, 若无法操作则失败. 结论: n堆石子个数异或和为0则先手必败, 否则必胜. 证明: 假设初始异或和为0, 先手选择一堆$x$, 拿完剩余$y$, 剩余堆的异或和变为$x^y$, 那么一定可以找到一堆$a$, $a$二进制 ...
分类:
其他好文 时间:
2019-04-25 20:14:30
阅读次数:
173
你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: false 解释: 如果堆中有 4 ...
分类:
其他好文 时间:
2019-04-09 18:33:59
阅读次数:
97