码迷,mamicode.com
首页 > 其他好文 > 详细

反尼姆博弈

时间:2019-08-07 22:29:47      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:name   strong   can   ace   int   博弈   amp   while   other   

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

博奕的模型。在尼姆博奕中判断必胜局面的条件是所有堆石子数目相异或不等于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 }

 

反尼姆博弈

标签:name   strong   can   ace   int   博弈   amp   while   other   

原文地址:https://www.cnblogs.com/-Ackerman/p/11317902.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!