博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1907 John(anti-nim)
阅读量:5897 次
发布时间:2019-06-19

本文共 706 字,大约阅读时间需要 2 分钟。

题目链接:

题意:n堆石子,两人轮流操作,每次操作只能选定其中一堆,并取走若干个(>=1个)。谁取走最后一个石子谁输。给定一个状态,问先取的赢还是后取的赢。

思路:结论:

(1)所有堆的石子均为1且SG为0,先手必胜;

(2)有些堆的石子大于1且SG不为0,先手必胜。

(3)所有堆的石子均为1且SG不为0,后手必胜;

(4)有些堆的石子大于1且SG为0,后手必胜。

证明:(1)的下一个状态必为(3);(2)分两种情况,第一种大于1的堆数等于1,则下一个状态为(3)否则下一个状态为(4);(3)的下一个状态为(1),(4)的下一个状态为(2)。也就是说,必胜态总有下一个状态为必败态;必败态的下一个状态必为必胜态。

#include 
#include
using namespace std;int C;int n;int main(){ for(scanf("%d",&C);C--;) { scanf("%d",&n); int i,flag=0,ans=0,x; for(i=1;i<=n;i++) { scanf("%d",&x); if(x>1) flag=1; ans^=x; } if(!flag&&!ans||flag&&ans) puts("John"); else puts("Brother"); } return 0;}

  

转载地址:http://zqxsx.baihongyu.com/

你可能感兴趣的文章
安装gulp及相关插件
查看>>
如何在Linux用chmod来修改所有子目录中的文件属性?
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>
gitlab 完整部署实例
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
struts中的xwork源码下载地址
查看>>
我的友情链接
查看>>
PHP 程序员的技术成长规划
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
js replace,正则截取字符串内容
查看>>
javascript继承方式详解
查看>>
lnmp环境搭建
查看>>
自定义session扫描器精确控制session销毁时间--学习笔记
查看>>
仿射变换
查看>>
视频直播点播nginx-rtmp开发手册中文版
查看>>
PHP队列的实现
查看>>
单点登录加验证码例子
查看>>
[T-SQL]从变量与数据类型说起
查看>>