【数论】博弈论 —— nim游戏

article/2025/10/2 15:48:04

知识点


一 . nim游戏的数学定义

Nim游戏是博弈论中最经典的模型,它又有着十分简单的规则和无比优美的结论 。
Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartial Combinatorial Games”(以下简称ICG)。

一般而言,满足以下条件的游戏是ICG:

  1.  有两名选手;
  2.  两名选手交替对游戏进行移动(move),每次一步,选手可以在(一般而言)有限的合法移动集合中任选一种进行移动;
  3.  对于游戏的任何一种可能的局面,合法的移动集合只取决于这个局面本身,不取决于轮到哪名选手操作、以前的任何操作、骰子的点数或者其它什么因素;
  4.  如果轮到某名选手移动,且这个局面的合法的移动集合为空(也就是说此时无法进行移动),则这名选手失败。根据这个定义,很多日常的游戏并非ICG。例如象棋就不满足条件3,因为红方只能移动红子,黑方只能移动黑子,合法的移动集合取决于轮到哪名选手操作。

对于条件3,有更进一步的定义Position。

我们将Position分为两类:
P-position:在当前的局面下,先手必败。
N-position:在当前的局面下,先手必胜。

他们有如下性质:
1.合法操作集合为空的局面是P-position;
2.可以移动到P-position的局面是N-position;
3.所有移动都只能到N-position的局面是P-position。

重要结论:对于一个Nim游戏的局面(a_1,a_2,...,a_n),它是P-position时,当且仅当a_1^a_2^...^a_n=0;它是N-position时,当且仅当a_1^a_2^...^a_n!=0,其中^表示异或(xor)运算。


模板题:洛谷 P2197 【模板】nim 游戏 

题目描述

甲,乙两个人玩 nim 取石子游戏。

nim 游戏的规则是这样的:地上有 n 堆石子(每堆石子数量小于 10^4),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取完,不能不取。每次只能从一堆里取。最后没石子可取的人就输了。假如甲是先手,且告诉你这 n 堆石子的数量,他想知道是否存在先手必胜的策略。

输入格式

本题有多组测试数据。

第一行一个整数 T (T\leqslant 10),表示有 T 组数据

接下来每两行是一组数据,第一行一个整数 n,表示有 n 堆石子,n\leqslant 10^4

第二行有 n 个数,表示每一堆石子的数量.

输出格式

共 T 行,每行表示如果对于这组数据存在先手必胜策略则输出 Yes,否则输出 No

输入输出样例

输入 #1

2
2
1 1
2
1 0

输出 #1

No
Yes

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
inline int read()
{int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}while(c>='0' && c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}return x*f;
}int main()
{int t=read();for(int i=1;i<=t;++i){int n=read(),res;for(int j=1;j<=n;++j){int a=read();if(j == 1) res=a; //将第一个数记录在res中else res^=a; //后添加的数与前面的数不断异或}if(res == 0) printf("No\n");else printf("Yes\n");}
}


http://chatgpt.dhexx.cn/article/AlafTpmP.shtml

相关文章

【模板题】几种常见的Nim游戏(博弈论)

一、AcWing 891. Nim游戏 【题目描述】 给定 n n n堆石子&#xff0c;两位玩家轮流操作&#xff0c;每次操作可以从任意一堆石子中拿走任意数量的石子&#xff08;可以拿完&#xff0c;但不能不拿&#xff09;&#xff0c;最后无法进行操作的人视为失败。 问如果两人都采用最优…

Kafka 为什么能那么快 | Kafka高效读写数据的原因

点击上方“服务端思维”&#xff0c;选择“设为星标” 回复”669“获取独家整理的精选资料集 回复”加群“加入全国服务端高端社群「后端圈」 无论 kafka 作为 MQ 也好&#xff0c;作为存储层也罢&#xff0c;无非就是两个功能&#xff08;好简单的样子&#xff09;&#xff0c…

【人人都懂密码学】一篇最易懂的Java密码学入门教程

密码与我们的生活息息相关&#xff0c;远到国家机密&#xff0c;近到个人账户&#xff0c;我们每天都在跟密码打交道&#xff1a; 那么&#xff0c;密码从何而来&#xff1f;生活中常见的加密是怎么实现的&#xff1f;怎么保证个人信息安全&#xff1f;本文将从这几方面进行浅谈…

Kafka必须掌握的核心技术--为什么吞吐量大、速度快?

点击上方“服务端思维”&#xff0c;选择“设为星标” 回复”669“获取独家整理的精选资料集 回复”加群“加入全国服务端高端社群「后端圈」 Kafka是大数据领域无处不在的消息中间件&#xff0c;目前广泛使用在企业内部的实时数据管道&#xff0c;并帮助企业构建自己的流计算应…

哪些软件问题也可导致硬盘录像机死机

硬盘录像机死机除了一些硬件上的问题之外&#xff0c;也有不少是由软件引起的。如&#xff1a; 1、病毒感染 病毒是计算机操作的大患&#xff0c;几乎人人恶之。病毒可以使计算机工作效率急剧下降&#xff0c;造成频繁死机、数据丢失、系统崩溃&#xff0c;甚至损坏主板、硬盘、…

导致硬盘录像机卡死的十大原因分析

硬盘录像机卡死除了一些技术上的问题之外&#xff0c;也有不少是由软件引起的。如&#xff1a; 1、病毒感染 病毒是硬盘录像机操作的大患&#xff0c;几乎人人恶之。病毒可以使硬盘录像机工作效率急剧下降&#xff0c;造成频繁死机、数据丢失、系统崩溃&#xff0c;甚至损坏主板…

谈项目管理和软件测试过程

谈项目管理和软件测试过程&#xff08;一&#xff09; 1. 软件测试在公司的组织保障是基础 1.1 研发部组织结构介绍 以华友公司研发部的组织结构为例&#xff0c;测试部门属于研发部副总裁直接管理&#xff0c;见如下结构图 公司研发部的组织结构图 …

NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装

一、NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起&#xff0c;传统的关系数据库在应付Web2.0网站&#xff0c;特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心&#xff0c;暴露了很多难以克服的问题&#xff1a; &#xff08;1…

软件公司面试总结

文章目录 面试1面试2面试3面试4面试5面试6 面试1 1、你先做个简单的自我介绍吧 我叫张三&#xff0c;2015年在重庆邮电大学毕业。我读的专业是电子信息。工作已经快5年了。 我上家公司的主营业务是在柬埔寨做移动支付钱包。 最近做的一个项目是聚合支付的项目&#xff0c;主要…

腾讯的硬盘里,有互联网的昨天今天和明天

作者&#xff1a;史中 来源&#xff1a;浅黑科技&#xff08;qianheikeji&#xff09; 2018年1月1日&#xff0c;太阳照常升起。 世界上所有的时钟合谋&#xff0c;把最后一个90后推过了18岁的门槛。对于这些年轻的面孔来说&#xff0c;自由的风终于如期而至&#xff0c;只是其…

机械硬盘与SSD固态硬盘性能的深度

从7200转硬盘升级到10000转的迅猛龙&#xff0c;那叫量变。从10000转的迅猛龙升级到SSD&#xff0c;这个叫质变。2者的差距是有些地方相当大&#xff0c;而有些却很接近&#xff0c;主要是难比较。经常听到有人说&#xff1a;我买2个黑盘组RAID 0&#xff0c;传输率也有接近250…

sudo rm-rf引发的惨案——Linux硬盘的分区和挂载

前言 前不久&#xff0c;刚使用组里的一台服务器&#xff0c;这台服务器平时用的人不多&#xff0c; 没有严格的管理机制&#xff0c;大家都使用同一个用户名进行远程连接&#xff0c;人人都有sudo权限。我因为对Linux不是非常熟悉&#xff0c;使用管理员权限下执行了一个删除…

DVR-硬盘录像机

硬盘录像机&#xff08;Digital Video Recorder&#xff0c;简称DVR&#xff09;&#xff0c;即数字视频录像机&#xff0c;相对于传统的模拟视频录像机&#xff0c;采用硬盘录像&#xff0c;故常常被称为硬盘录像机&#xff0c;也被称为DVR。 它是一套进行图像存储处理的计算…

[转]80后研制出世界最快硬盘:传输速度每秒1.5GB

传输速度每秒1.5GB&#xff0c;仅需3秒就能传输一张DVD光盘的数据&#xff0c;是普通硬盘速度的15倍。一秒钟可以访问31万次&#xff0c;而普通硬盘仅可以访问16次。这些数据&#xff0c;描绘着一款固态硬盘的卓越性能。研发出这款世界传输速度最快、性能最好的固态硬盘的&…

我们测了30款移动硬盘,却如此尴尬

我最近在研究移动硬盘&#xff0c;如果你也感兴趣不妨来看看我这些天的研究成果吧。不卖关子&#xff0c;我们发现不同品牌SDD移动硬盘间存在着很大差异&#xff0c;如果你非常在意读写速度就需要慎重选择了&#xff1b;而不同品牌HDD移动硬盘间在速度上并不存在巨大差异&#…

web安全攻防渗透测试实战指南

1. Nmap的基本 Nmap ip 6 ip Nmap -A 开启操作系统识别和版本识别功能 – T&#xff08;0-6档&#xff09; 设置扫描的速度 一般设置T4 过快容易被发现 -v 显示信息的级别&#xff0c;-vv显示更详细的信息 192.168.1.1/24 扫描C段 192.168.11 -254 上 nmap -A -T4 -v -i…

加速!加速!西数万转硬盘猛禽RAID测试

[迅猛龙的袭击] 西部数据猛禽系列在玩家们的心目里或许一直是高高在上&#xff0c;因为在西数之前的策略里&#xff0c;这个系列的产品都是列入到“企业级”里的&#xff0c;但随着高端玩家对硬盘性能的需求越来越高&#xff0c;“猛禽”这个代表极端性能的产品线&#xff0c;也…

xboxone硬盘坏的表现_你的机械硬盘有RV振动传感器吗?三款2.5寸HDD测试

机械硬盘人人都用&#xff0c;虽然SSD的价格逐年下降&#xff0c;可是就容量/价格比来说&#xff0c;离机械硬盘还有不少距离。尽管HDD有着大容量的优势&#xff0c;可是如今硬盘存储密度越来越高&#xff0c;磁头距离盘片太近&#xff0c;现在的硬盘也越来越脆弱&#xff0c;经…

32g的u盘速度测试软件,速度堪比硬盘 海盗船32GB海量运动型U盘评测

速度堪比硬盘 海盗船32GB海量运动型U盘评测 出处&#xff1a;快科技 2010-03-23 15:39:30 作者&#xff1a;良宵 编辑&#xff1a;良宵[爆料] 收藏文章 内容导航&#xff1a; 第[01]页&#xff1a;[导言]第[02]页&#xff1a;[产品赏析]第[03]页&#xff1a;[性能测试及总结…

运维java项目的技巧 (war包、jar包、docker环境)

最近上线了修复log4j2漏洞的java项目。小结下系统更新操作过程。 一、tomcat下的war包的项目 cd /var/lib/tomcat9 root:/var/lib/tomcat9# ls webapps/ test test.war test.war-bak ROOTsystemctl stop tomcat9 备份test.war 上传新的test.war systemctl start tomcat9查…