C++ 数论相关题目 博弈论 Nim游戏

给定 n
堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。

问如果两人都采用最优策略,先手是否必胜。

输入格式
第一行包含整数 n

第二行包含 n
个数字,其中第 i
个数字表示第 i
堆石子的数量。

输出格式
如果先手方必胜,则输出 Yes。

否则,输出 No。

数据范围
1≤n≤105
,
1≤每堆石子数≤109
输入样例:
2
2 3
输出样例:
Yes

先手必胜状态:可以走到某一个必败状态
先手必败状态:走不到任何一个必败状态

几种状态:
(1)全部是0,异或起来也是0。(必败态
(2)异或起来不是0,若等于x,x的第k位为1的话,则一定存在一个ai的第k位等于1,则从ai中拿走ai-ai^x个石子,则剩下的异或为0。(证明:总存在一种拿法,使得拿完异或起来为0)
(3)异或起来是0,假设从ai中拿走一些,则剩下的异或起来一定不等于0,因为反正假设等于0,拿走前后的全部堆异起来有ai等于拿走部分后的ai,矛盾。
在这里插入图片描述
总结:刚拿到石子,异或起来为不为0,则一定存在某种取法,使得剩下的异或为0,后手任意操作后状态一定不为0,这样循环,先手总操作不为0,后手总操作为0,最终,必败态(全部取完全0)一定会被后手先遇到,则先手胜。反之后手胜。

分析猛如虎,代码很简单。只需要把每个数读进来,异或一遍,看是不是0就行。

#include <iostream>
#include <algorithm>

using namespace std;

int main ()
{
    int n;
    cin>>n;
    int res = 0;
    while (n -- )
    {
        int x;
        cin>>x;
        res ^= x;
    }
    if(res) puts("Yes");
    else puts("No");
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/359559.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第5章 决策树(代码python实践)

文章目录 第5章 决策树—python 实践书上题目5.1利用ID3算法生成决策树&#xff0c;例5.3scikit-learn实例 《统计学习方法&#xff1a;李航》笔记 从原理到实现&#xff08;基于python&#xff09;-- 第5章 决策树 第5章 决策树—python 实践 import numpy as np import pand…

Docusaurus 文档侧边栏增加 New 标识

在使用 Docusaurus 搭建文档站点的时候&#xff0c;我们经常要给某个侧边栏菜单增加一些醒目的标识&#xff0c;比如针对新创建的文档给它一个 New 的标识&#xff0c; 以提醒过来看文档的用户这是一个新增加项或者新特性&#xff08;阅读的时候不要遗漏&#xff09;。 然而这个…

C#: form 添加窗体最小化事件,添加系统托盘图标,点击后可以打开、最小软件窗口

说明&#xff1a; 1.实现窗体在最小化后触发一个事件&#xff0c;可以去实现需要的功能。 2.最小化后软件图标出现在系统右下角的托盘串口。 3.点击托盘口的图标可以实现软件弹出窗口和最小化的切换。 1.参考办法 以下是判断C#窗体最小化到状态栏的状态的方法&#xff1a;…

[AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言4.5key价格泄漏ChatGPT4.0使用地址ChatGPT正确打开方式最新功能语音助手存档…

Redis核心技术与实战【学习笔记】 - 7.Redis GEO类型 - 面向 LBS 应用的数据类型

前言 前面&#xff0c;介绍了 Redis 的 5 大基本数据类型&#xff1a;String、List、Hash、Set、Sorted Set&#xff0c;它们可以满足绝大多数的数据存储需求&#xff0c;但是在面对海里数据统计时&#xff0c;它们的内存开销很大。所以对于一些特殊的场景&#xff0c;它们是无…

计算机网络-物理层设备(中继器 集线器)

文章目录 中继器中继器的功能再生数字信号和再生模拟信号同一个协议 集线器&#xff08;多口中继器&#xff09;不具备定向传输的原因集线器是共享式设备的原因集线器的所有接口都处于同一个碰撞域&#xff08;冲突域&#xff09;内的原因 小结 中继器 中继器的功能 中继器的…

JVM 内存模型

1 什么是 JVM 内存模型 JVM 需要使用计算机的内存&#xff0c;Java 程序运行中所处理的对象或者算法都会使用 JVM 的内 存空间&#xff0c;JVM 将内存区划分为 5 块&#xff0c;这样的结构称之为 JVM 内存模型。 2 JVM 为什么进行内存区域划分 随着对象数量的增加&#xff…

基于二值化图像转GCode的单向扫描实现

基于二值化图像转GCode的单向扫描实现 什么是单向扫描单向扫描代码示例 基于二值化图像转GCode的单向扫描实现 什么是单向扫描 在激光雕刻中&#xff0c;单向扫描&#xff08;Unidirectional Scanning&#xff09;是一种雕刻技术&#xff0c;其中激光头只在一个方向上移动&a…

【Vue】二、Vue 组件展示控制的优雅解决方案

vue项目中展示的组件&#xff0c;我平常都是通过v-show进行展示控制&#xff0c;类似这样 通常情况下&#xff0c;一个正常展示组件的流程&#xff0c;是通过前端用户点击触发函数&#xff0c;在函数中对data数据进行操作&#xff0c;从而展示不同的页面 showWork: false, sho…

如何用Docker+jenkins 运行 python 自动化?

1.在 Linux 服务器安装 docker 2.创建 jenkins 容器 3.根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境) 4.运行新的 python 容器&#xff0c;执行 jenkins 从仓库中拉下来的自动化项目 5.执行完成之后删除容器 前言 环境准备 Linux 服务器一台(我的是 CentOS7)…

GitHub工作流的使用笔记

文章目录 前言1. 怎么用2. 怎么写前端案例1&#xff1a;自动打包到新分支前端案例2&#xff1a;自动打包推送到gitee的build分支案例3&#xff1a;暂时略 前言 有些东西真的就是要不断的试错不断地试错才能摸索到一点点&#xff0c;就是摸索到凌晨两三点第二天要8点起床感觉要…

通过例子说明-动态规划

选择>行动>思考&#xff0c;好像是个死循环 -song。 动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;是一种解决问题的数学优化方法&#xff0c;通常用于解决具有重叠子问题和最优子结构性质的问题。它的基本思想是将问题拆分成小的子问题&#…

革新性技术:基于搜索操作的存内计算

文章目录 革新性技术&#xff1a;基于搜索操作的存内计算CSDN首个存内计算开发者社区NVALT&#xff1a;近似查找表的艺术MAP&#xff1a;存内计算的未来SQL-PIM&#xff1a;数据库的未来内存计算架构与技术小结从NVALT到NVQuery&#xff1a;存内计算的探索与前景NVQuery&#x…

242. 有效的字母异位词(力扣)(C语言题解)

✨欢迎来到脑子不好的小菜鸟的文章✨ &#x1f388;创作不易&#xff0c;麻烦点点赞哦&#x1f388; 所属专栏&#xff1a;刷题 我的主页&#xff1a;脑子不好的小菜鸟 文章特点&#xff1a;关键点和步骤讲解放在 代码相应位置 题目链接&#xff1a; 242. 有效的字母异位词 …

UE5 C++ 读取本地图片并赋值到UI上

目录 结果图 节点样式 主要代码 调试代码 结果图 节点样式 主要代码 &#xff08;注释纯属个人理解&#xff0c;可能存在错误&#xff09; // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h&q…

Mysql进阶篇

1.Mysql服务架构 连接层: 处理客户端连接请求,对用户进行认证 服务层: 可以接收sql,调用存储过程,优化sql,缓存数据.... 引擎层: 负责实际与文件层进行交互操作的,可以有不同的引擎选择. 物理文件层: 存储表数据 以及 各种日志文件. 2.Mysql引擎 存储引擎就是存储数据&…

TSINGSEE青犀视频智慧电梯管理平台,执行精准管理、提升乘梯安全

一、方案背景 随着城市化进程的不断加快&#xff0c;我国已经成为全球最大的电梯生产和消费市场&#xff0c;电梯也成为人们日常生活中不可或缺的一部分。随着电梯数量的激增&#xff0c;电梯老龄化&#xff0c;维保数据不透明&#xff0c;物业管理成本高&#xff0c;政府监管…

StarRocks-3.1.0 单节点部署

1. 相关环境准备 FE&#xff1a; /opt/starrocks BE&#xff1a; /opt/starrocks 安装包下载 wget https://releases.starrocks.io/starrocks/StarRocks-3.1.0.tar.gz解压缩 tar -zxvf StarRocks-3.1.0.tar.gz 安装jdk (v2.5 及以上版本建议安装 JDK 11&#xff0c;我们使用…

腾讯mini项目总结-指标监控服务重构

项目概述 本项目的背景是&#xff0c;当前企业内部使用的指标监控服务的方案的成本很高&#xff0c;无法符合用户的需求&#xff0c;于是需要调研并对比测试市面上比较热门的几款开源的监控方案&#xff08;选择了通用的OpenTelemetry协议&#xff1a;Signoz&#xff0c;otel-…

MedSAM:深度学习通用医学影像分割模型,更快、更准确地自动识别诊断疾病

MedSAM是一款基于深度学习的医学影像分割工具&#xff0c;它能够自动识别和描绘医学影像中的重要区域&#xff0c;如肿瘤或其他组织的病变。该工具通过学习大量医学影像和对应的掩模&#xff08;即正确的分割结果&#xff09;&#xff0c;能够处理各种不同的医学影像和复杂情况…