luoguP4279 [SHOI2008]小约翰的游戏 Anti-SG 博弈论

这就是一个Anti SG问题
当整个游戏的\(sg = 0\)时,如果不存在单一游戏局面\(sg > 1\),那么先手必胜
当整个游戏的\(sg \neq 0\)时,如果至少存在一个单一游戏局面\(sg > 1\),那么先手必胜
简略的证一下QAQ
首先证\(N\)至少有一个后继是\(P\)
- 整个游戏的\(sg = 0\),不存在单一游戏局面\(sg > 1\)
一定有偶数个\(1\),显然先手必胜
- 整个游戏的\(sg \neq 0\),至少存在一个单一游戏局面\(sg > 1\)
类似\(Nim\)游戏,先手一定可以选出一堆石头使得\(sg = 0\)
然后是\(P\)的后继全部都是\(N\)
- 整个游戏的\(sg \neq 0\),不存在单一游戏局面\(sg > 1\)
一定有奇数个\(1\),显然先手必败
- 整个游戏的\(sg = 0\),至少存在一个单一游戏局面\(sg > 1\)
由于\(sg = 0\),因此一定存在两个以上的单一游戏局面\(sg > 1\)
此时,不论先手怎么取,后继状态的\(sg\)不可能等于\(0\),并且至少存在一个单一游戏局面\(sg > 1\)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
#define ri register int
#define rep(io, st, ed) for(ri io = st; io <= ed; io ++)
#define drep(io, ed, st) for(ri io = ed; io >= st; io --)
#define gc getchar
inline int read() {
int p = 0, w = 1; char c = gc();
while(c < '0' || c > '9') { if(c == '-') w = -1; c = gc(); }
while(c >= '0' && c <= '9') p = p * 10 + c - '0', c = gc();
return p * w;
}
int a[50050];
int main() {
int T = read();
while(T --) {
int n = read();
rep(i, 1, n) a[i] = read();
int flag = 0, sg = 0, win;
rep(i, 1, n) flag += (a[i] > 1), sg ^= a[i];
if(!flag && sg == 0) win = 1;
else if(flag && sg != 0) win = 1;
else win = 0;
if(win == 1) printf("John\n");
else printf("Brother\n");
}
return 0;
}
luoguP4279 [SHOI2008]小约翰的游戏 Anti-SG 博弈论的更多相关文章
- BZOJ1022 [SHOI2008]小约翰的游戏John 【博弈论】
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3014 Solved: 1914 [Submi ...
- [Bzoj1022][SHOI2008]小约翰的游戏John(博弈论)
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2976 Solved: 1894[Submit] ...
- 【BZOJ】1022: [SHOI2008]小约翰的游戏John(博弈论)
http://www.lydsy.com/JudgeOnline/problem.php?id=1022 好神的博弈论. 题解见dzy的blog:http://dzy493941464.is-prog ...
- SHOI2008小约翰的游戏John
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1139 Solved: 701[Submit][ ...
- bzoj 1022: [SHOI2008]小约翰的游戏John anti_nim游戏
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1189 Solved: 734[Submit][ ...
- 洛谷 P4279 [SHOI2008]小约翰的游戏 解题报告
P4279 [SHOI2008]小约翰的游戏 题目描述 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有\(n\)堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子,在这堆石子 ...
- BZOJ 1022 [SHOI2008]小约翰的游戏John AntiNim游戏
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1475 Solved: 932[Submit][ ...
- 1022: [SHOI2008]小约翰的游戏John9(Auti_SG)
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3150 Solved: 2013[Submit] ...
- BZOJ 1022 [SHOI2008]小约翰的游戏John
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1635 Solved: 1036[Submit] ...
随机推荐
- App测试需注意
APP测试的时候,建议让开发打好包APK和IPA安装包,测试人员自己安装应用,进行测试.在测试过程中需要注意的测试点如下: 1安装和卸载 ●应用是否可以在iOS不同系统版本或Android不同系统版本 ...
- SolrJ API 官方文档最佳实践
以下内容译自Solr Wiki官方文档,版权没有,随意转载. Solrj 是一个访问solr的Java客户端.它提供了一个java接口用于添加更新和查询solr索引.本页面介绍SolrJ最新版本1.4 ...
- PATH变量重复
命令: export PATH=$(echo $PATH | tr : "\n"| sort | uniq | tr "\n" :) Code: awk -F: ...
- 在使用FastJson开发遇到的的坑
1.list中放入同一个对象,会出现内存地址引用{"$ref":"#[0]"},后台可以识别,但是前台不会识别 @Test public void testLi ...
- scala中“_”的用法
参见链接 http://blog.csdn.net/i6448038/article/details/50017427
- Java代码优化总结
代码优化是一个很重要的课题.一般来说,代码优化的目标主要有两个,一个是减小代码的体积,另一个是提高代码运行的效率. 代码优化的细节有很多,此处列举部分: 1.尽量指定类.方法的final修饰符. 带有 ...
- mysqlbinlog的日志类型
一.mysqlbinlog简介 binlog又叫二进制日志文件,它会将mysql中所有修改数据库数据的Query以二进制的形式记录到日志文件中,如:create,insert,drop,update等 ...
- mysql中utf8编码的utf8_bin,utf8_general_cs,utf8_bin的区别
utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用. utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果 utf8_bin: com ...
- Nginx - 日志格式及输出
1. 前言 在 Nginx 服务器中,如果想对日志输出进行控制还是很容易的.Nginx 服务器提供了一个 HttpLogModule 模块,可以通过它来设置日志的输出格式. 2. HttpLogMod ...
- drop out为什么能够防止过拟合
来源知乎: dropout 的过程好像很奇怪,为什么说它可以解决过拟合呢?(正则化) 取平均的作用: 先回到正常的模型(没有dropout),我们用相同的训练数据去训练5个不同的神经网络,一般会得到5 ...