BZOJ 小约翰的游戏John 反尼姆博弈
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
解题方法: Nim 博弈问题。我们分两种情况,如果全是 1 的话,如果是奇数个则是 Brother 否则是 John。如果不全是 1的话,记 p 为所有石子数量的 xor 和,若 p 为 0 则是 Brother 否则是 John。详细推导可以参见:这里写链接内容
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main(){int T;scanf("%d", &T);while(T--){int n, x, sg = 0;bool flag = 1;scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%d", &x);sg ^= x;if(x != 1) flag = 0;}if(!flag&&sg!=0 || flag&&!sg) puts("John");else puts("Brother");}return 0;
}
BZOJ 小约翰的游戏John 反尼姆博弈相关推荐
- BZOJ 1022 [SHOI2008]小约翰的游戏John
title: 'BZOJ 1022 [SHOI2008]小约翰的游戏John' categories: BZOJ date: 2016-3-8 21:27:00 tags: [SG函数,博弈论] De ...
- BZOJ 1022 [SHOI2008]小约翰的游戏John AntiNim游戏
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MB Submit: 1475 Solved: 932 [Submit ...
- bzoj 1022: [SHOI2008]小约翰的游戏John anti_nim游戏
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MB Submit: 1189 Solved: 734 [Submit ...
- bzoj 1022: [SHOI2008]小约翰的游戏John(anti-nim)
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2375 Solved: 1497 [Submi ...
- 1022: [SHOI2008]小约翰的游戏John【Nim博弈,新生必做的水题】
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2709 Solved: 1726 [Submi ...
- BZOJ1022 [SHOI2008]小约翰的游戏John 【博弈论】
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3014 Solved: 1914 [Submi ...
- bzoj 1022: [SHOI2008]小约翰的游戏John(反nim游戏)
Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取 的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不 ...
- bzoj 1022: [SHOI2008]小约翰的游戏John
$ \color{#0066ff}{ 题目描述 }$ 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取 的时候,可以随意选择一堆石子,在这堆石子中取走任 ...
- 【bzoj 1022】 小约翰的游戏John 【SHOI2008】
Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取 的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不 ...
最新文章
- javascript动画系列第一篇——模拟拖拽
- 模拟Web 服务器磁盘满故障深入解析
- cnblogs-5个必须掌握的maven命令
- JS实现失去焦点判断input内容是否大于0
- 电脑屏幕保护怎么取消_怎么监控员工电脑?老板如何知道员工上班在干什么?...
- 简易的素描图片转换流程与实现
- ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区...
- FPGA信号处理系列文章——用matlab理解CIC滤波器的原理
- 常用的默认端口号(HTTP\HTTPS\FTP)
- 轻松绘制图像图形!且看Aspose新产品GDI +图形处理API-Aspose.Drawing如何操作!
- 即时通讯开发之开源工程WebRTC原理
- ccf二十四点Java_CCF--二十四点 - osc_kel5e0sw的个人空间 - OSCHINA - 中文开源技术交流社区...
- 校招总结--建议全文背诵
- [艾兰岛]制作传送门之传送技能——kura酱长期更新
- orz正在流行的符号---失意体前躯
- 最新青龙拉库命令及监控变量教学
- 如何完成上传图片到腾讯云
- 服务器接显示器显示不支援,Win10专业版显示器输入不支援怎么办?如何解决?...
- 光影在线电影网站制作笔记
- 关于用盐去黑头的亲身经历~ - 生活至上,美容至尚!
热门文章
- 通俗易懂理解几何光学(五)光线的光路计算及像差理论
- python 利用脚本命令压缩加密文件并删除源文件
- DirectX中的粒子系统
- java使用aspose将word,excel,ppt转pdf
- jsp:forward标签介绍
- npm install 连接不上github解决办法
- 设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。要求如下:
- win10无法连接到win7系统更新服务器,win10系统提示无法连接到windows服务的解决方法...
- 软件测试简历上的职业技能怎么写,测试工程师岗位个人简历个人技能范文
- UVA11134 传说中的车 Fabled Rooks