题意:同样是给定n个堆,每个堆可任意取,但问的是谁最后拿走最后一个,是就输。

分析:有点意思,但是慢慢分析,也能找到必胜策略,当所有堆都为1是,偶数堆显然是先手必胜,奇数堆显然是先手必输,当大于1的堆有一个时,那么我们可以讨论剩下的1的堆数是奇数还是偶数,当剩下的堆是奇数时,那么,先手就可以将大于1的堆拿完,剩下奇数个1的堆显然,对手必输,先手必胜。当剩下的堆为偶数时,显然我使大于1的堆为1就可以了。所以只有1个大于1的堆时,先手肯定必胜。

下面我们讨论大于1的堆有n个时候,这时候,必须要进行状态转移,那么问题来了,转换到那个状态才能必胜?不难想到我将n个大于1的堆变成只有1个大于1的堆就是必胜局面。所以问题来了,如何判断是否先手能将局势转换只有一个大于1的堆呢,好了这就回到了经典nim堆问题,当SG为0时,说明对手拿到了最后一个,局势是必败,当SG不为0时,那么先手会拿到最后一个。

#include<iostream>
#include<string.h>
#include<sstream>
#include<set>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<math.h>
using namespace std;
const int N = 100+5;int main() {int kase;cin >> kase;while (kase--) {int m,ant,ans=0,k=0;cin >> m;for (int i = 0; i < m; i++) {cin >> ant;ans = ans ^ ant;if (ant > 1)k = 1;}if (!k) {//没有大于1的堆时if (m%2==0)cout << "John\n";else cout << "Brother\n";}else {//有大于1的堆//看SG值是否为0,SG不为0,说明它可以转换只有一个堆大于1的状态//相当于普通的nim堆//谁会拿到最后一个大于1的堆!if(ans!=0)cout << "John\n";else cout << "Brother\n";}}return 0;
}

HDOJ1907 SG问题相关推荐

  1. Sg.js框架核心概念

    Sg.js框架核心概念: 1)所有变量.方法.类对象全部都是从属于$g主树,由$g分支出很多$g.变量名.$g.方法.$g.对象id.$g.类: 2)获取控件内部属性必须使用公开的get方法获取,禁止 ...

  2. UVA 1482 - Playing With Stones(SG打表规律)

    UVA 1482 - Playing With Stones 题目链接 题意:给定n堆石头,每次选一堆取至少一个.不超过一半的石子,最后不能取的输,问是否先手必胜 思路:数值非常大.无法直接递推sg函 ...

  3. Win32.Lioten.SG病毒

    病毒名称:Win32.Lioten.SG 疯狂性:低 破坏性:中 普及度:中 Win32.Lioten.SG病毒描述: Win32.Lioten.SG是一种通过网络共享传播的蠕虫,还会利用Window ...

  4. Trie树合并 + SG函数 ---- BZOJ4730. Alice和Bob又在玩游戏(动态开点Trie 树上全局异或标记 + 合并 + 博弈论)

    题目大题 题目大意: 解题思路: 首先我们对于子树u的SG函数为SG函数为SG函数为 ⨁是异或和\bigoplus是异或和⨁是异或和 SG[u]=mex{⨁w∈(w的父亲在u到v的路径上)SG[w]∣ ...

  5. 点分治问题 ----------- P3727 曼哈顿计划E[点分治+博弈SG函数打表找规律]

    题目链接 解题思路: 1.首先对于每个操作我们实际上是一个博弈问题 对于k=1的操作就是很基础的NIM游戏就是找到一条链的异或和为0 对于k=2的操作通过达打表找规律: 如果s是奇数那么偶数的SG函数 ...

  6. xilinx sg dma 注意事项

    先更新 CURENT_DESC 设置 DMAC.RS 最后 TAIL DESC (cyclic 模式下 为描述符必须是要的 cyclic 回环的表) SG MOD 发送已成功测通 开心 XILINX ...

  7. AXI SG DMA 简易驱动 版本构思 (一)

    第一步: 利用mmap 在内核态和用户态形成内存映射关系,和进程间通信 shmat 的原理 一致 (节省内存,如果拷贝的话就是, double的关系) 第二步: mmap的 地址要映射到,dma 分配 ...

  8. BZOJ 1874: [BeiJing2009 WinterCamp]取石子游戏(SG函数)

    Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 871  Solved: 365 [Submit][Status][Discuss] Descripti ...

  9. 【博弈论】【SG函数】bzoj1457 棋盘游戏

    一开始就必胜的特判一下. #include<cstdio> #include<cstring> #include<set> #include<algorith ...

最新文章

  1. 【camera-lidar-radar】基于卡尔曼滤波和扩展卡尔曼滤波的相机、激光雷达、毫米波雷达多传感器后融合
  2. Linux主机下无报错安装Apache服务器
  3. Tomcat 6.0.32 +Spring dbcp datasource关闭Tomcat出现严重异常
  4. Scala基础知识笔记2
  5. 每天一道LeetCode-----根据先序遍历和中序遍历还原二叉树
  6. [电子商务网站设计] 之 My Space
  7. 教你玩转CSS 组合选择符
  8. Linux 启动顺序
  9. 合法整数集(51Nod-1315)
  10. centos重启mysql_CentOS 7下启动、关闭、重启、查看MySQL服务
  11. 【转载】随机游走及马尔科夫链(本体映射相关)
  12. 输出最长上升子序列 模型(DP)
  13. swift扩展_Swift扩展
  14. 【Python小程序】第2讲:如何将TXT文件转换成CSV文件?
  15. [VC]socket含义
  16. nodejs+vue+elementui企业考勤管理系统
  17. 《大数据之路:阿里巴巴大数据实践》-第1篇 数据技术篇 -第3章数据同步
  18. java shiro原理_Shiro的原理及Web搭建
  19. keil 出现 Error parsing node '#text':value 'HDSC:145' not in enumeration
  20. 区块链项目 - 2 工作量证明

热门文章

  1. 用注解还是用xml 配置?
  2. 基于Xml 的IOC 容器-载入<list>的子元素
  3. Hive的基本操作-创建分区表
  4. spring编程式事务控制
  5. ModelAttribute注解
  6. JAVA标识符的命名规则和规范
  7. 如何免安装服务器将 React 整合进 Spring Boot
  8. Multimedia Event Extraction (M2E2) Annotation Guideline V0.1
  9. H5与Native交互之JSBridge技术 1
  10. 先序,中序,后序线索二叉树