蓝桥 小明的游戏 反nim 博弈论

2023-11-09

题目描述

蓝桥公司给他们的员工准备了丰厚的奖金,公司主管小明并不希望发太多的奖金,他想把奖金留给智慧的人,于是他决定跟每一个员工玩一个游戏,规则如下:

  1. 桌面上一共有 n 堆一元钱
  2. 双方轮流行动,由小明先行动,每次行动从某一堆钱中拿走若干元(至少一元钱),取走最后一元钱的人落败。

请问员工们能拿到奖金吗?

输入描述

第一行为一个整数 T,表示测试数据数量。

每个测试用例包含俩行。第一行为一个整数 n , 第二行包括 n 个整数 a1​,a2​...an​ 表示第 ii 堆有 a_iai​ 元。

(1 \leq T, n \leq 10^5, 1 \leq a_i \leq 10^91≤T,n≤105,1≤ai​≤109 )

保证所有测试用例的 nn 的和不超过 2 \times 10^52×105。

输出描述

如果员工能拿到奖金输出 YES​ , 否则输出 NO

输入输出样例

示例 1

输入

3
2
1 1
2
2 2
3
2 2 1

输出

NO
YES
NO

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

思路:

正nim 博弈论:蓝桥 小明的游戏1 博弈论 nim_FOOL_amazing的博客-CSDN博客

反nim博弈论要考虑只有一个的情况,若是只有一个则先手必输

证明: 1.当所有堆的石子数均为1时: 1.1 石子异或和为0,即有偶数堆。此时显然先手必胜。 1.2 异或和不为0,奇数堆。此时显然先手必败。 2.当有一堆的石子数 时,显然石子异或和不为0 一定存在操作方法使得通过对大于 的石子堆操作将局面转化为 1.2 先手必败, 因此当前局 面为先手必胜 3.当有两堆及以上的石子数>1时 3.1 石子堆异或和不为 0,根据 游戏的证明,可以得到总有一种方法转化 和不为 状 态,也就是转为 3.2状态。 3.2 石子堆异或和为0, 当石子堆 的堆数 大于 时候可以转向 3.1状态,否则则可以转向 2状态(必胜态)。 观察3我们可以发现, 3.2 状态起手可以转化成 3.1,而且3.1只能变成3.2或者先手必胜态,因此3.2位先 手必胜状态。

代码:

//反nim 博弈论 拿走最后一块的输,  
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int T;
	cin>>T;
	while(T--){
		int n;
		cin>>n;
		int nim=0;
		int ok=0;
		for(int i=0;i<n;i++){
			int x;
			cin>>x;
			if(x>1) ok=1;
			nim^=x;    
		}
		if(ok){
			if(nim==0) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
		}
		else{
			if(nim==0) cout<<"NO"<<endl;
		else cout<<"YES"<<endl;
		}
		
	}

	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥 小明的游戏 反nim 博弈论 的相关文章

随机推荐

  • Android如何配置init.rc中的开机启动进程(service)

    开篇 为什么写这篇文章 先说下我自己的情况 我是个普通的学生 之前在学校一直做Android应用开发 找实习的时候也一直想找相关的工作 来到现在这家公司以后 由于业务调整 被领导安排去做底层开发 本来我对底层的东西一无所知 加上其实并不感兴
  • Python 函数是传值还是传引用

    传递参数的时候 python不允许程序员选择采用传值还是传引用 Python参数传递采用的肯定是 传对象引用 的方式 实际上 这种方式相当于传值和传引用的一种综合 如果函数收到的是一个可变对象 比如字典或者列表 的引用 就能修改对象的原始值
  • C++中char和int型变量的一点心得

    字符字面值一般是用一对单引号来表示 char类型一般就是用字符字面值来初始化 赋值 由于char类型的是单字节长度 当给char类型的变量用字符 字面值赋值时 当单引号里面的内容超过一个字节时 系统会自动截取一个字节的内容给char变量 忽
  • JVM-了解概念

    1 什么是JVM JVM是 java Virtual Machine java虚拟机 的缩写 JVM是作用于计算设备的规范 它是一个虚构出来的计算机 是通过在实际计算机上仿真模拟各种计算机功能来实现的 java虚拟机包括一套字节码指令集 一
  • 苏宁 11.11:仓库内多 AGV 协作的全局路径规划算法研究

    本文为 InfoQ x 苏宁 2018双十一 技术特别策划系列文章之一 1 背景 随着物联网和人工智能的发展 越来越多的任务渐渐的被机器人取代 机器人逐渐在发展中慢慢进入物流领域 智能叉车 AGV Automated Guided Vehi
  • ROS :发送一个目标位置,机器人自动规划路线,移动到该位置。

    使用 Action move base msgs MoveBaseAction move base在world中的目标 新建send goal cpp send goal cpp Created on Aug 10 2016 Author
  • minio 配置

    文章目录 资源访问 用户和权限 策略 用户 Service Accounts java 连接 minio k8s 部署 minio 资源访问 某些资源例如图片 需要可以直接访问 新建桶 上传一张图片上去 点击桶设置 设置 Access Po
  • 灰度共生矩阵的原理及实现(特征提取)-OpenCV

    最近在研究机器学习相关内容 后面会尽量花时间整理成一个系列的博客 然后朋友让我帮他实现一种基于SVR支持向量回归的图像质量评价方法 然而在文章的开头竟然发现 灰度共生矩阵这个陌生的家伙 于是便有此文 主要参考博客1 http blog cs
  • 个人中心 - 实现修改用户头像、用户名或密码

    目录 1 修改用户头像 1 1 获取原来的用户头像和用户名 1 2 实现保存头像 2 修改用户名或密码 1 修改用户头像 本文是针对之前的一篇项目博客 博客系统 做的一个扩展功能 1 1 获取原来的用户头像和用户名 想要修改头像 那么就得先
  • MOS管过大电流时关断为什么会出现尖峰电压

    尖峰电压属于浪涌电压里的一种 持续时间极短但数值很高 电机 电容器和功率转换设备 如变速驱动器 是产生尖峰电压的主要因素 雷电击中室外的输电线路也会引起极危险的高能瞬变 它们会在低压电源电路中定期发生 峰值可能会达到数千伏 处理方法 为了防
  • Ubuntu 安装 cuDNN(附测试)

    为深度学习所用 博主预想在Ubuntu16 04上安装 显卡驱动 CUDA cuDNN Tensorflow gpu Keras PyCharm 参考了众多资料 最终成功将所有软件安装完毕 且能成功运行使用 该篇博客介绍了cuDNN的安装教
  • 相机畸变+张正友标定(含源代码)

    希望2022能够自主学习 本文狠狠的借鉴了 相机标定之张正友标定法数学原理详解 含python源码 知乎和最详细 最完整的相机标定讲解 a083614的专栏 CSDN博客 相机的标定 非常感谢 只供自我学习 不做他用 我们知道了相机是如何成
  • Collection集合的三种初始化方法

    一 java容器可以分为两大类 1 Collection其中包括List Set Queue 2 Map 二 Arrays asList 方法 接受一个数组或一个逗号分隔的元素列表 并将其转化为Lists对象 三 1 构造器方法 Colle
  • UVC摄像头-学习

    多摄像头拍摄实现 从人脸识别入手 已经实现打开双uvc摄像头 需要支持UVC 支持USB OTG接口驱动 通过OTG扩展多个USB接口 应用层调用JNI函数 可以实现实时显示 图像拍摄 视频录制等功能 UVCCamera 听名字就知道使用U
  • 入门靶机渗透之Me And My Girlfriend

    靶场介绍 靶场下载地址 点击进入下载界面 下载 ova文件 在VMware中导入该虚拟机 导入完成后开启虚拟机 这个靶场背景告诉我们有一对恋人 即 Alice 和 Bob 这对情侣原本很浪漫 但自从 Alice 在一家私人公司 Ceban
  • Arduino IDE编译烧写ESP32 CAM

    一 安装Arduino IED 到官网下载IDE 二 安装ESP32 工具 打开菜单 文件 首选项 在设置页 附加开发板管理器网址 添加 https dl espressif com dl package esp32 index json
  • 异常检测的总结性介绍

    1 异常检测 1 1 什么是异常值 在机器学习中 异常检测和处理是一个比较小的分支 或者说 是机器学习的一个副产物 因为在一般的预测问题中 模型通常是对整体样本数据结构的一种表达方式 这种表达方式通常抓住的是整体样本一般性的性质 而那些在这
  • 练习四、把数组扁平;获取页面所用标签,并去重

    功能描述 题目一 将多层嵌套数组降低层级 比如 1 2 3 0 4 5 10 200 3 扁平到 1 2 3 0 4 5 10 200 3 题目二 获取页面所用标签 比如应含有html多种标签 并且去重 主要考点 题目一 判断是否为数组的方
  • Activity启动流程详解

    普通Activity创建也就是平常我们在代码中采用startActivity Intent intent 方法来创建Activity的方式 总体流程如下图 启动过程设计到两个进程 本地进程和系统服务进程 本地进程也就是我们的应用所在进程 系
  • 蓝桥 小明的游戏 反nim 博弈论

    题目描述 蓝桥公司给他们的员工准备了丰厚的奖金 公司主管小明并不希望发太多的奖金 他想把奖金留给智慧的人 于是他决定跟每一个员工玩一个游戏 规则如下 桌面上一共有 n 堆一元钱 双方轮流行动 由小明先行动 每次行动从某一堆钱中拿走若干元 至