巴什博奕,n%(m+1)!=0时,先手总是会赢的 来自 <https://leetcode-cn.com/problems/nim-game/comments/> 思路:此题代码很简单,但是思想却不好理解,我们每次拿石头,一共有两种情况,A:石头总数为4的倍数,B:石头总数不为4的倍数,为什么我们会 ...
分类:
其他好文 时间:
2019-12-16 09:23:17
阅读次数:
88
//a1 ^ a2 ^ ··· ^ an = 0 –>先手必败; //a1 ^ a2 ^ ··· ^ an != 0 –>先手必胜; #include<iostream> using namespace std; int main() { int n; cin >> n; int res = 0; ...
#include <cstring> #include <iostream> #include <algorithm> #include <unordered_set> using namespace std; const int N = 110; int n; int f[N]; int sg(i ...
//只能拿某些特定个数的石子 #include <cstring> #include <iostream> #include <algorithm> #include <unordered_set> using namespace std; const int N = 110, M = 10010; ...
#include<iostream> using namespace std; int n; int main() { cin>>n; int res=0; for(int i=1; i<=n; i++) { int x; cin>>x; if(i%2) res=res^x;//判断是不是奇数 } ...
为了方便考虑,不妨规定只有当当前的巧克力棒都取完了,才能拿新的巧克力棒然后令先手第一个拿的集合为S,根据nim游戏,当S的xor不为0时先手(即原来的后手)必胜,又轮到先手拿集合,那么只要一直不存在xor为0的集合,先手最终就必败然后当存在xor为0的集合,那么先手必然可以做到取一个最大xor子集, ...
分类:
其他好文 时间:
2019-11-11 10:03:24
阅读次数:
115
题目描述 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排。游戏由两个人进行,两人轮流操作,每次操作者都可以从最左或最右的一堆中取出若干颗石子,可以将那一堆全部取掉,但不能不取,不能操作的人就输了。 Orez问:对于任意给出 ...
分类:
其他好文 时间:
2019-11-09 15:26:22
阅读次数:
105
题目描述 甲,乙两个人玩Nim取石子游戏。 nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取完,不能不取。每次只能从一堆里取。最后没石子可取的人就输了。假如甲是先手,且告诉你这n堆石子的数量,他想知道是否存在先手必胜的策略 ...
分类:
其他好文 时间:
2019-11-09 13:31:18
阅读次数:
72
题面:http://poj.org/problem?id=2975 cpp 本题就是nim游戏的一个变试,因为我们知道nim游戏中每次会取ai xor x include include include include include include include using namespace ...
分类:
其他好文 时间:
2019-09-22 14:53:49
阅读次数:
86
题面:https://www.luogu.org/problem/P2197 cpp 本题的解法是把nim游戏看做是有向图游戏用SG函数来解的. Code: include include include using namespace std; int T,n,m,x,f[10100],a[100 ...
分类:
其他好文 时间:
2019-09-22 14:39:43
阅读次数:
65