Portal -->bzoj1022

Solution

​   这题其实是裸的反Nim,这里主要是为了写反Nim游戏的证明

​   首先给出反Nim(anti-nim)的定义和结论:

【定义】桌子上有 N 堆石子,游戏者轮流取石子; 每次只能从一堆中取出任意数目的石子,但不能不取;取走最后一个石子者败

【结论】先手必胜当且仅当满足下面两个条件中的一个

​   (1)所有堆的石子数都为\(1\)且游戏的\(sg\)值为\(0\)

​   (2)有些堆的石子数大于\(1\)且游戏的\(sg\)值不为\(0\)

​ ​  

​   然后我们来证明anti-nim游戏的结论,可以分成两种情况讨论(以下内容摘自论文):

1、每堆只有\(1\)个石子:

​   那么显然先手必胜当且仅当石子堆数\(n\)为偶数

2、其他情况:

​​   (1)当游戏的\(sg\)值不为\(0\)时:若还有至少两堆石子的数目大于$ 1$,则先手将 \(sg\)值变为 \(0\)即可;若只有一堆石子数大于\(1\),则先手总可以将状态变为有奇数个\(1\)(可以把大于\(1\)的那堆直接取完或者取剩\(1\)个),所以,当\(sg\)不为\(0\)时先手必胜

​​   (2)当游戏的\(sg\)值为\(0\)时:至少有两堆石子的数目大于 \(1\),则先手决策完之后,必定至少有一堆的石子数大于 \(1\),且\(sg\)值(当前游戏局面的)不为\(0\),由上段的论证我们可以发现,此时,无论先手如何决策,都只会将游戏带入先手必胜局,所以先手必败

​  

​   代码大概长这个样子

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,T,ans,cnt; int main(){
#ifndef ONLINE_JUDGE
freopen("a.in","r",stdin);
#endif
int x;
scanf("%d",&T);
for (int o=1;o<=T;++o){
ans=0; cnt=0;
scanf("%d",&n);
for (int i=1;i<=n;++i){
scanf("%d",&x),ans^=x;
if (x>1) ++cnt;
}
if (cnt==0) printf(n%2?"Brother\n":"John\n");
else printf(ans?"John\n":"Brother\n");
}
}

【bzoj1022】小约翰的游戏John的更多相关文章

  1. bzoj千题计划112:bzoj1022: [SHOI2008]小约翰的游戏John

    http://www.lydsy.com/JudgeOnline/problem.php?id=1022 http://www.cnblogs.com/TheRoadToTheGold/p/67448 ...

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

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

  3. [Bzoj1022][SHOI2008]小约翰的游戏John(博弈论)

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

  4. bzoj1022: [SHOI2008]小约翰的游戏John(博弈SG-nim游戏)

    1022: [SHOI2008]小约翰的游戏John 题目:传送门 题目大意: 一道反nim游戏,即给出n堆石子,每次可以取完任意一堆或一堆中的若干个(至少取1),最后一个取的LOSE  题解: 一道 ...

  5. SHOI2008小约翰的游戏John

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

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

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

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

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

  8. 1022: [SHOI2008]小约翰的游戏John

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

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

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

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

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

随机推荐

  1. HTTP简单教程

    目录 HTTP简介 HTTP工作原理 HTTP消息结构 客户端请求消息 服务器响应消息 实例 HTTP请求方法 HTTP响应头信息 HTTP状态码 HTTP状态码分类 HTTP状态码列表 HTTP c ...

  2. 面向英特尔® x86 平台的 Unity* 优化指南: 第 1 部分

    原文地址 目录 工具 Unity 分析器 GPA 系统分析器 GPA 帧分析器 如要充分发挥 x86 平台的作用,您可以在项目中进行多种性能优化,以最大限度地提升性能. 在本指南中,我们将展示 Uni ...

  3. 深入了解MySQL存储索引

    (一)关于存储引擎 创建合适的索引是SQL性能调优中最重要的技术之一.在学习创建索引之前,要先了解MySql的架构细节,包括在硬盘上面如何组织的,索引和内存用法和操作方式,以及存储引擎的差异如何影响到 ...

  4. python爬取淘宝华为手机

    import re from selenium import webdriver from selenium.common.exceptions import TimeoutException fro ...

  5. Scrum立会报告+燃尽图(Beta阶段第一次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284 项目地址:https://coding.net/u/wuyy694 ...

  6. POJ题目分类推荐 (很好很有层次感)

    著名题单,最初来源不详.直接来源:http://blog.csdn.net/a1dark/article/details/11714009 OJ上的一些水题(可用来练手和增加自信) (POJ 3299 ...

  7. erlang访问https地址

    参考How do I do an HTTPS request with Erlang? 1> application:start(inets). ok 2> application:sta ...

  8. jQuery的2把利器

    <!-- $是一个函数,首先是给window添加$,然后该值是一个函数,函数返回的值是对象.1. jQuery核心函数 * 简称: jQuery函数($/jQuery) * jQuery库向外直 ...

  9. 第八次java笔记

  10. php关于static和self的一点理解

    在使用和学习laravel的过程中,总会看到类似与static::methods或者static::variable的使用方式,对此感觉到疑惑和不解,后来查阅了相关的资料才知道他是php5.3之后新加 ...