反尼姆博弈

Posted -ackerman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反尼姆博弈相关的知识,希望对你有一定的参考价值。

在尼姆博奕中取完最后一颗糖的人为赢家,而取到最后一颗糖为输家的就是反尼姆博奕。这道题就反尼姆

博奕的模型。在尼姆博奕中判断必胜局面的条件是所有堆石子数目相异或不等于0 。  而在反尼姆博奕中判断必胜局

面的条件有两点,满足任意一点先手都能取胜,即必胜局面。   

 

题目链接:https://cn.vjudge.net/contest/317258#problem/I

 

 1、若所有堆的数量都为1, 并且1的数量为偶数先手赢。
 2、若不都为1, 那么判断ans即可。
 
 1 #include <cmath>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <iostream>
 5 #include <algorithm>
 6 #include <math.h>
 7 
 8 using namespace std;
 9 const int maxn = 1e5+5;
10 
11 int arr[maxn];
12 
13 int main()
14 
15     int T;
16     scanf("%d",&T);
17     while (T--)
18     
19         int n;
20         int ans = 0;
21         int k = 0;
22         scanf("%d",&n);
23         for (int i=0;i<n;i++)
24         
25             int a;
26             scanf("%d",&a);
27             ans ^= a;
28             if (a>1)
29                 k = 1;
30         
31         if (k == 0)
32         
33             if (ans%2)
34                 puts("Brother");
35             else
36                 puts("John");
37         
38         else
39         
40             if (ans)
41                 puts("John");
42             else
43                 puts("Brother");
44         
45     
46     return 0;
47 

 

以上是关于反尼姆博弈的主要内容,如果未能解决你的问题,请参考以下文章

博弈--尼姆博弈

尼姆博弈

尼姆博弈

博弈论-尼姆博弈

POJ2975 Nim 博弈论 尼姆博弈

POJ 2234 Matches Game 尼姆博弈