当前位置: 首页 > news >正文

阶梯Nim问题

问题形式

  
  有\(n\)个位置\(1...n\),每个位置上有\(a_i\)个石子。有两个人轮流操作。操作步骤是:挑选\(1...n\)中任一一个存在石子的位置\(i\),将至少1个石子移动至\(i-1\)位置(也就是最后所有石子都堆在在0这个位置)。谁不能操作谁输。求先手必胜还是必败。
    

结论

  
  问题等价于,求位置为奇数的\(a_i\)的异或和,若异或和等于0,则先手必败,否则先手必胜。你可能已经注意到这非常像Nim游戏。其实这个游戏恰好等价于:将每个奇数位置的数\(x\)看成一堆有\(x\)个石子的石子堆,然后玩Nim游戏。
  

证明

  
  拿走某一堆石子的一部分,相当于将某个奇位置的石子移动到它左边的偶位置上。
  
  如果大家都只动奇位置的石子,那么这等价于两人在玩Nim游戏。
  
  但如果有人想打破规则呢?
  
  假设Nim游戏先手必胜,那么先手肯定优先玩Nim游戏;如果后手试图破坏局面,将某个偶位置上的若干石子移动到了左边的奇位置i上,那么先手可以将这若干个刚移到i的石子继续移动到i左边的偶位置上,对Nim局面依然没有任何影响,除非后手回头来继续动奇位置的石子,那也只能是输。
  
  那么如果Nim游戏先手必败,也是同理,后手可以用相同的方式迫使先手玩Nim游戏,直到输为止。
  
  因此,奇数位置的石子的相关信息,就直接决定了阶梯\(Nim\)问题的结果。

转载于:https://www.cnblogs.com/RogerDTZ/p/9439540.html

相关文章:

  • python中的函数
  • 织梦dedecms教程简单实现防采集最有效的2个方法
  • mysql清空表数据后如何让自增ID仍从1开始
  • 一、开发基础(4)
  • Vue学习笔记之Webpack介绍
  • 第一次python词云尝试
  • 论优越感
  • 【院校巡礼】em兰州大学/em - 叁研良语的文章 - 知乎
  • μC/OS-III 概述
  • centos6.5使用yum安装redis 设置开机启动
  • 初识设计模式(建造者模式)
  • 支付系统整体架构
  • Sketch 介绍
  • 简单的自创线程池
  • python网络编程三次握手和四次挥手
  • [nginx文档翻译系列] 控制nginx
  • Android系统模拟器绘制实现概述
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • E-HPC支持多队列管理和自动伸缩
  • extjs4学习之配置
  • Javascript基础之Array数组API
  • MySQL几个简单SQL的优化
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Terraform入门 - 1. 安装Terraform
  • vue-router的history模式发布配置
  • Webpack 4x 之路 ( 四 )
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 力扣(LeetCode)22
  • 浏览器缓存机制分析
  • 如何进阶一名有竞争力的程序员?
  • 小程序button引导用户授权
  • #### go map 底层结构 ####
  • #HarmonyOS:Web组件的使用
  • (+4)2.2UML建模图
  • (14)Hive调优——合并小文件
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (论文阅读30/100)Convolutional Pose Machines
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Micro Framework初体验
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET值类型变量“活”在哪?
  • .NET中使用Redis (二)
  • /var/spool/postfix/maildrop 下有大量文件
  • ?.的用法
  • [ffmpeg] x264 配置参数解析
  • [HackMyVM]靶场Boxing
  • [Kubernetes]2. k8s集群中部署基于nodejs golang的项目以及Pod、Deployment详解
  • [LeetCode系列]3元素最近和问题的O(n^2)解法
  • [MySQL复制异常]Cannot execute statement: impossible to write to binary log since statement is in row for