ZOJ3113_John
这个题目是一个典型的Anti_Sg。我也不知道为什么这么叫,呵呵,反正大家都这么叫,而且我也是听别人说,看别人的日志自己才知道的。
题目的意思是给你不同颜色的石子,每次可以去一种颜色的石子若干个(至少为1),取完最后一颗石子的人获胜。
由于对于同一种颜色的石子来说,可取的数量是任意的,所以在这个题目里面一个数所对应的SG函数值就是本身。
首先我们定义一个数k为当前每一堆石子数量的异或值。
对于必胜策略,有两种可能的情况。
一。初始状态下,所有的石子堆中石子的个数全为1,且堆数为偶数。
二。初始状态下,石子堆中石子的个数不全为1,且k不为0。
对于第一种状态是显然的。下面来讨论一下第二种状态吧。
初始状态下,因为k!=0,那么先手的人总可以在某一堆中取出一定的数量(根据异或的性质,这是一定存在的哦,写成二进制自己理解一下吧),使得k=0,这样后手的人无论怎么取,取后的结果一定不为0。
每次取完的效果都是先手的人使得k由非零变零(也包括最后一次),后手的人有零变非零。所以先手必胜。
到这里题目瞬间变水了。 上代码:
#include <iostream>
#include <cstdio>
using namespace std; int main()
{
int n,t,k,ans,tot;
scanf("%d",&t);
while (t--)
{
tot=ans=;
scanf("%d",&n);
while (n--)
{
scanf("%d",&k);
ans^=k;
tot+=k>;
}
if (tot)
{
if (ans) puts("John"); else puts("Brother");
}
else if (ans) puts("Brother"); else puts("John");
}
return ;
}
ZOJ3113_John的更多相关文章
随机推荐
- 20155318 2016-2017-2《Java程序设计》课程总结
20155318 2016-2017-2<Java程序设计>课程总结 每周作业链接 预备作业1:亦师亦友--我所期望的师生关系,对专业的认识与期望等 预备作业2:没有了自主,学习的小船说翻 ...
- 20155323 2016-2017-2 《Java程序设计》第2周学习总结
20155323 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 对象:对象是类的一个实例,有状态和行为. 类:类是一个模板,它描述一类对象的行为和状态. 第 ...
- 浅入tcp
1.认识TCP tcp协议是传输层协议,它的最主要的3个特点是面向连接.可靠保证.基于字节流.当应用层把数据给tcp层时,注意如果数据大于MSS是要在tcp层进行分段的.tcp协议为了保证不丢包会给每 ...
- PostgreSQL参数学习:max_wal_senders
磨砺技术珠矶,践行数据之道,追求卓越价值回到上一级页面:PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页[作者 高健@博客园 luckyjackgao@g ...
- 使用WinIO库实现保护模式下的IO和内存读写
问题已解决: 原因是函数的调用方式与WinIO中不一致,使用的时候漏掉了__stdcall. 函数原定义为: 在实际的GPIO读写中遇到以下问题: SetPortVal可正常写入,但是GetPortV ...
- WPF binding Tag
使用一个控件控制另外一个控件的显示与隐藏.
- python-面向对象-内置方法补充
__del__item系列 __getitem__ __setitem__ __delitem____hash____eq__ 构造方法 申请一个空间析构方法 释放一个空间之前执行某对象借用了操作系统 ...
- Linux 安装Redis<准备>(使用Mac远程访问)
阅读本文需要一定的Linux基础 一 Redis简介 redis是用c语言编写的一款开源的高性能键值对(key-value)数据库 它通过提供多种键值数据类型来适应不同场景下的存储需求 二 Redis ...
- 如何停止AAD服务
Connect-MsolService (Get-MSOLCompanyInformation).DirectorySynchronizationEnabled 用这个命令查看是enable还是Dis ...
- Kafka安装之三 spring-kafka实践
一.spring-kafka配置详解 1.1 要是用spring-kafka 我们首先要在pom要.xml中引入spring-kafka包 <dependencies> <depen ...