这个题目是一个典型的Anti_Sg。我也不知道为什么这么叫,呵呵,反正大家都这么叫,而且我也是听别人说,看别人的日志自己才知道的。

题目的意思是给你不同颜色的石子,每次可以去一种颜色的石子若干个(至少为1),取完最后一颗石子的人获胜。

由于对于同一种颜色的石子来说,可取的数量是任意的,所以在这个题目里面一个数所对应的SG函数值就是本身。

首先我们定义一个数k为当前每一堆石子数量的异或值。

对于必胜策略,有两种可能的情况。

一。初始状态下,所有的石子堆中石子的个数全为1,且堆数为偶数。

二。初始状态下,石子堆中石子的个数不全为1,且k不为0。

对于第一种状态是显然的。下面来讨论一下第二种状态吧。

初始状态下,因为k!=0,那么先手的人总可以在某一堆中取出一定的数量(根据异或的性质,这是一定存在的哦,写成二进制自己理解一下吧),使得k=0,这样后手的人无论怎么取,取后的结果一定不为0。

每次取完的效果都是先手的人使得k由非零变零(也包括最后一次),后手的人有零变非零。所以先手必胜。

到这里题目瞬间变水了。 上代码:

 #include <iostream>
#include <cstdio>
using namespace std; int main()
{
int n,t,k,ans,tot;
scanf("%d",&t);
while (t--)
{
tot=ans=;
scanf("%d",&n);
while (n--)
{
scanf("%d",&k);
ans^=k;
tot+=k>;
}
if (tot)
{
if (ans) puts("John"); else puts("Brother");
}
else if (ans) puts("Brother"); else puts("John");
}
return ;
}

ZOJ3113_John的更多相关文章

随机推荐

  1. nginx重启无法找到PId的解决办法

    nginx停止的时候,出现了如下错误 nginx: [error] open() "/export/servers/nginx/logs/nginx.pid" failed (2: ...

  2. [agc004D]Teleporter

    Description 传送门 Solution 依题意我们可以知道,以2-n为出发点的边和1号节点会构成一课树(不然2-n号节点无法都达到首都). 为了让2-n号节点中,离1号节点的距离<k的 ...

  3. 【NOIP2018pj】题解

    [NOIP2018pj]题解 \(T1\) 题面 洛谷 题解 好像并没有什么好说的... #include <iostream> #include <cstdio> #incl ...

  4. replace与replaceAll的区别

    这两者有些人很容易搞混,因此我在这里详细讲述下. replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了 ...

  5. 动态权限<一>基本介绍

    android 6.0以上为了保护用户的隐私,和以往被人诟病的权限机制,确立了新的权限机制.从 Android 6.0(API 级别 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授 ...

  6. 软考之信息安全工程师(包含2016-2018历年真题详解+官方指定教程+VIP视频教程)

    软考-中级信息安全工程师2016-2018历年考试真题以及详细答案,同时含有信息安全工程师官方指定清华版教程.信息安全工程师高清视频教程.持续更新后续年份的资料.请点赞!!请点赞!!!绝对全部货真价实 ...

  7. ython进阶06 循环对象

    这一讲的主要目的是为了大家在读Python程序的时候对循环对象有一个基本概念. 循环对象的并不是随着Python的诞生就存在的,但它的发展迅速,特别是Python 3x的时代,循环对象正在成为循环的标 ...

  8. [network]数字签名

    数字签名(又称公钥数字签名.电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法.一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证. ...

  9. 大O算法

    大O计法:根据执行次数计算#sum = (1+n)*n/2://执行了一次,即为O(1)#for(i=0;i<n;i++);//执行了n次,即为O(n)#算法的时间复杂度:T(n) = O(f( ...

  10. IO多路复用(二) -- select、poll、epoll实现TCP反射程序

    接着上文IO多路复用(一)-- Select.Poll.Epoll,接下来将演示一个TCP回射程序,源代码来自于该博文https://www.cnblogs.com/Anker/p/3258674.h ...