Description

小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取,我们规定取到最后一粒石子的人算输。小约翰相当固执,他坚持认为先取的人有很大的优势,所以他总是先取石子,而他的哥哥就聪明多了,他从来没有在游戏中犯过错误。小约翰一怒之前请你来做他的参谋。自然,你应该先写一个程序,预测一下谁将获得游戏的胜利。

Input

本题的输入由多组数据组成,第一行包括一个整数T,表示输入总共有T组数据(T≤500)。每组数据的第一行包括一个整数N(N≤50),表示共有N堆石子,接下来有N个不超过5000的整数,分别表示每堆石子的数目。

Output

每组数据的输出占一行,每行输出一个单词。如果约翰能赢得比赛,则输出“John”,否则输出“Brother”,请注意单词的大小写。

Sample Input

2
3
3 5 1
1
1

Sample Output

John
Brother

HINT

【数据规模】

对于40%的数据,T ≤ 250。

对于100%的数据,T ≤ 500。

博弈论

考虑特殊情况

每堆石子都是1时,如果堆数是奇数brother win,比如只有一堆石子且为1

考虑偶数堆相同的石子,此时xor值为0,此时先取的人可以取走一堆,后取得人也取走一堆变成少两堆的状态,如此往复

知道最后还有两堆,先手取1堆,后手取到只剩一个,由此当sg==0时后手胜

当sg!=0时,先手胜,因为先手必然能找到一中方法使sg==0

 #include<cstdio>
int T,n;
int main(){
scanf("%d",&T);
while(T--){
int num=,x,step=;bool flag=;
scanf("%d",&n);
for(int i=;i<=n;i++) {
scanf("%d",&x),num^=x;
if (x>)flag=;
step++;
}
if(flag){
if(num==) printf("Brother\n"); else printf("John\n");}
else if(step%==) printf("Brother\n");else printf("John\n");
}
}

【BZOJ 1022】 [SHOI2008]小约翰的游戏John的更多相关文章

  1. bzoj 1022: [SHOI2008]小约翰的游戏John anti_nim游戏

    1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1189  Solved: 734[Submit][ ...

  2. BZOJ 1022 [SHOI2008]小约翰的游戏John

    1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1635  Solved: 1036[Submit] ...

  3. BZOJ 1022 [SHOI2008]小约翰的游戏John AntiNim游戏

    1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1475  Solved: 932[Submit][ ...

  4. BZOJ 1022: [SHOI2008]小约翰的游戏John (Anti-nim)

    Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3134  Solved: 2003[Submit][Status][Discuss] Descripti ...

  5. BZOJ 1022: [SHOI2008]小约翰的游戏John【anti-SG】

    Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取 ...

  6. BZOJ 1022 SHOI2008 小约翰的游戏John 博弈论

    题目大意:反Nim游戏,即取走最后一个的人输 首先状态1:假设全部的堆都是1,那么堆数为偶先手必胜,否则先手必败 然后状态2:假设有两个堆数量同样且不为1,那么后手拥有控场能力,即: 若先手拿走一堆, ...

  7. BZOJ 1022: [SHOI2008]小约翰的游戏John [SJ定理]

    传送门 $anti-nim$游戏,$SJ$定理裸题 规定所有单一游戏$sg=0$结束 先手必胜: $1.\ sg \neq 0,\ 某个单一游戏sg >1$ $2.\ sg = 0,\ 没有单一 ...

  8. BZOJ.1022.[SHOI2008]小约翰的游戏John(博弈论 Anti-Nim)

    题目链接 Anti-Nim游戏: 先手必胜当且仅当: 1.所有堆的石子数为1,且异或和为0 2.至少有一堆石子数>1,且异或和不为0 简要证明: 对于1:若异或和为1,则有奇数堆:异或和为0,则 ...

  9. 51nod 1069 Nim游戏 + BZOJ 1022: [SHOI2008]小约翰的游戏John(Nim游戏和Anti-Nim游戏)

    首先,51nod的那道题就是最简单的尼姆博弈问题. 尼姆博弈主要就是判断奇异局势,现在我们就假设有三个石子堆,最简单的(0,n,n)就是一个奇异局势,因为无论先手怎么拿,后手总是可以在另一堆里拿走相同 ...

  10. bzoj 1022: [SHOI2008]小约翰的游戏John【anti-nim】

    如果全是1,那么n是奇数先手必败 否则,xor和为0先手必败 证明见 https://www.cnblogs.com/Wolfycz/p/8430991.html #include<iostre ...

随机推荐

  1. mac 下curl的使用

    curl用起来非常方便,但是老是记不住各个参数的含义,还是记录下来方便查询吧 这东西现在已经是苹果机上内置的命令行工具之一了,可见其魅力之一斑 1)二话不说,先从这里开始吧! curl http:// ...

  2. postgresql常用SQL

    --查看数据库 select * from pg_database; --查看表空间 select * from pg_tablespace; --查看语言 select * from pg_lang ...

  3. 转: Lua 语言 15 分钟快速入门

    看点: 1. 以很特殊的方式工,把Lua的语法全部输出一段,很容易让人记住..不错 转: http://blog.jobbole.com/70480/

  4. 【ANT】ant概述

    ANT是集软件测试.编译.打包.部署等自动化构建工具,是Apache软件基金会JAKARTA目录中的一个子项目,具有以下优点: 跨平台性 ANT是由Java语言编写,具有很好的跨平台性. 操作简单 A ...

  5. C#算法基础之冒泡排序

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. 和阿文一起学H5——如何搜到超酷的GIF素材

    方法一: 1.条件搜索法 关键词 + gif 2.dribbble全球顶点设计师殿堂,里面有好多大师神作. https://dribbble.com/ 3.pinterest,号称灵感的春药的网站,收 ...

  7. 第四十三篇、利用NSProxy解决NSTimer内存泄漏问题

    问题描述: 用NSTimer来实现每隔一定时间执行制定的任务,例如最常见的广告轮播图.如果我们在 timerWithTimeInterval:1 target:self 中指定target为当前控制器 ...

  8. JSON解析例子

    //解析的东西是数组就用数组接受,是字典就用字典接受 //my.h#ifndef __1_Header_h#define __1_Header_h#define DEBUG 1#define aa 1 ...

  9. OC3_dealloc

    // // Dog.h // OC3_dealloc // // Created by zhangxueming on 15/6/18. // Copyright (c) 2015年 zhangxue ...

  10. web前端面试题收集(二)

    简单介绍下你的前端代码开发与调试环境. Doctype声明的作用以及html4.01与html5中此声明的区别? 常用的块级元素与行内元素分别有哪些? 请画一下W3C盒模型 请写一个js函数,将url ...