附上原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=1022

反SG博弈 的SJ定理。

先说结论  先手获胜的条件有两个:

1.异或和等于0 并且对于每组小游戏的SG值全都小于等于1

2.异或和不等于0 并且对于每组小游戏存在SG值大于1

证明,先说第一种情况 。因为异或和等于1并且SG值全都小于等于1  先手只需要把其中一个SG值为1的游戏拿了变成SG为0  而这样总的异或和也就变成了1。而后手每次需要面对的都是SG异或和为1的情况。所以先手必胜后手必败。

然后第二种情况。 (1) 当SG值大于1的只有一组的时候。先手只需要操作最大的SG值这个数让他的值变为0或1,达到异或和为1就可以了。这样无论后手怎么操作 先手就能到  “异或和等于0 并且对于每组小游戏的SG值全都小于等于1”也就是情况一 这样的必胜态。(2) 当SG值大于1的有多组的时候。先手最开始只需要和尼姆博弈一样维护SG值的异或和等于零。而后手只有面对 “异或和等于0 并且对于每组小游戏的SG值全都小于等于1”也就是情况一才能获胜,因为先手不断的在维护SG值的异或和为零,所以后手只能面对异或和为零的情况,并且需要SG值全都小于等于1才能赢。而局面SG值大于1的不止一个,在对最后两个 SG值大于1的值 时候如果后手拿掉一个,先手也拿掉一个。如果后手不拿掉一个那么先手继续维护SG值异或和为零。综上所述第二种情况下也是先手必胜。。。。。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int a[4100];
int main()
{int T;scanf("%d",&T);while(T--){int n ;scanf("%d",&n);int sum =0;for(int i=1;i<=n;i++){scanf("%d",&a[i]);sum^=a[i];}int flag=0;for(int i=1;i<=n;i++){if(a[i]>1)flag=1;}if((flag==0 &&sum)  || (!sum &&flag==1 ) )///后手必胜的情况puts("Brother");else if( (sum==0&&flag==0) || (sum!=0&&flag) )///先手必胜puts("John");}return 0;
}

bzoj1022 约翰的游戏 反SG-博弈相关推荐

  1. 牛客小白月赛7 B自杀游戏(sg博弈)

    sg博弈结论为,下个状态sg的补集的最小值. 题目 #include<bits/stdc++.h> using namespace std; const int maxn=1e5+9; b ...

  2. bzoj1022: [SHOI2008]小约翰的游戏John 博弈

    裸的Anti-Nim(其实刚学会我会乱说?),结论是:当且仅当每堆石子为1且游戏SG值为0,或有些堆的石子数大于1且游戏的SG值不为0时,先手必胜. 特殊情况不难证明,当SG值不为0时,若还有至少两堆 ...

  3. 博弈论之SG函数(NIM博弈、反NIM博弈证明+例题)--POJ2311

    目录 NIM博弈: 题目: 代码: 反NIM博弈: 题目: 代码: 公平组合游戏ICG: 有向图游戏: Mex运算: SG函数: 有向图游戏的和: 定理: 题目: 代码: 参考材料: NIM博弈: 内 ...

  4. HDU 3590 PP and QQ(反nim博弈,删边游戏)

    PP and QQ 思路 删边游戏了解一下,其实就是个nim博弈吧,只是删边个数有特殊限制, 然后就是一个反nim博弈了. 删边定理: 遇到分叉口时,它的子树上的可操作的sg函数为所有子树节点的sg函 ...

  5. BZOJ_1022_[SHOI2008]_小约翰的游戏John_(博弈论_反Nim游戏)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1022 反Nim游戏裸题.详见论文<组合游戏略述--浅谈SG游戏的若干拓展及变形>. ...

  6. 【BZOJ1022】小约翰的游戏(博弈论)

    [BZOJ1022]小约翰的游戏(博弈论) 题面 BZOJ 题解 \(Anti-SG\)游戏的模板题目. #include<iostream> #include<cstdio> ...

  7. 1022: [SHOI2008]小约翰的游戏John【Nim博弈,新生必做的水题】

    1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2709  Solved: 1726 [Submi ...

  8. [SHOI2008]小约翰的游戏John(博弈+SJ定理)

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

  9. BZOJ1022 [SHOI2008]小约翰的游戏John 【博弈论】

    1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 3014  Solved: 1914 [Submi ...

最新文章

  1. 【Java学习笔记之十】Java中循环语句foreach使用总结及foreach写法失效的问题
  2. hdu 2570 迷障(贪心)
  3. bzoj 3365: [Usaco2004 Feb]Distance Statistics 路程统计【容斥原理+点分治】
  4. C# 离线使用nuget
  5. 天猫方糖 篇一:新版天猫放糖改造立体声
  6. 【操作系统】分段内存管理
  7. 【白皮书分享】2021超级品牌力白皮书:数字时代的品牌人群心智重塑.pdf(附下载链接)...
  8. 7. Shell 脚本编写
  9. [BZOJ 3709] Bohater
  10. configurationproperties_Spring Boot中@ConfigurationProperties注解实现原理源码解析
  11. 计算机在资产管理中的应用,浅析计算机在学校固定资产管理中的应用
  12. 基于HTML+CSS+JavaScript实现---美丽家乡石埇镇(建议收藏)
  13. 中国大数据风控企业揭秘系列之航天信息
  14. 今日头条推荐算法原理解析
  15. 让不懂编程的人爱上iPhone开发(2017iOS11+Swift4+Xcode9版)-第5篇
  16. linux中创建目录树,linux怎样创建目录树
  17. 操作系统笔记(一)——操作系统的定义及作用
  18. 鸿蒙一体机使用方法,教学一体机的使用方法
  19. 项目管理四个核心要素
  20. python numpy 子数组_详解:Python 取numpy数组的某几行某几列方法(含对与错示例)...

热门文章

  1. 苹果自带输入法怎么换行_微信个性签名怎么弄成竖的?不仅可以竖着还可以加边框效果!...
  2. 查看linux 系统 服务器型号
  3. hdu1814 Peaceful Commission,2-sat
  4. html表格table表头和首列固定
  5. 求助交通仿真 Netlogo软件
  6. 2017cad光标大小怎么调_cad光标设置,小编教你CAD的十字光标如何设置大小
  7. 全志A10平板上的ubuntu终极安装版,支持HDMI和平板本机LCD
  8. orcle plsql 列类型 BLOB与CLOB的互转,RAW
  9. python编写脚本教程_python脚本编写教程gee引擎解密工具
  10. 脱离鼠标后必须记住地快捷命令方式