刘汝佳的《训练指南》组合游戏部分中写了“翻棋子游戏”这样一个问题:一个棋盘上每个格子有一个棋子,每次操作可以随便选一个朝上的棋子(x,y),代表第i行第j列的棋子,选择一个形如(x,b)或(a,y)(其中b < y,a < x)的棋子,然后把它和(x,y)一起翻转,无法操作的人输。

对于该问题,书上的分析如下:把坐标为(x,y)的棋子看成大小分别为x和y的两堆石子,则本题转化为了经典的Nim游戏,如果难以把棋子看作石子,可以先把Nim游戏中的一堆石子看成一个正整数,则Nim游戏中的每次操作是把其中一个正整数减小或者删除。

对于如何将棋子看成石子堆,最开始也是十分疑惑,后来想通了,现将完整思路整理如下:

首先对于当前所有n个正面朝上的棋子,看做数量分别为其横纵坐标大小的两堆石子,总共即为2n堆石子。现选择棋子(x,y),同时也选择了(a,y),其中a<x。这时分两种情况:

  1. 如果(a,y)也是正面朝上,那么相当于删去了大小为x,y,a,y的四堆石子。设原所有石子堆的Nim和为K,则现在的Nim和变为K^x^y^a^y=K^x^a 这可以看成是一个Nim和为K的石子堆中去掉了一个大小为x的堆,而后又增添了一个大小为a的堆,也就相当于某个大小为x的堆去掉了x-a个石子。
  2. 如果(a,y)是反面朝上,那么相当于添加了a,y大小的石子堆,删去了x,y大小的石子堆,Nim和同样变为K^x^y^a^x,与1.中本质上是一样的。
    综上所述,对棋子的每一次操作都相当于是在初始的2n堆石子堆中进行了一次类似Nim游戏的操作,因此可以将翻棋子游戏看作是有这样2n堆石子的Nim游戏。

转载于:https://www.cnblogs.com/DrCarlluo/p/6746106.html

关于《训练指南》中的“翻棋子游戏”相关推荐

  1. 翻棋子游戏与Nim游戏

    翻棋子游戏: 题意:一个棋盘上每个格子有一个棋子,每次操作可以随便选一个朝上的棋子(x,y),代表第i行第j列的棋子,选择一个形 如(x,b)或(a,y)(其中b < y,a < x)的棋 ...

  2. 虚幻4脱坑指南——官网C++编程教程中第一人称设计游戏教程的若干问题及解决方法

    一.前言 我使用的虚幻4引擎版本为4.25.3,碰到的问题是针对官网C++编程教程中第一人称设计游戏教程出现的情况. 二.问题与实现 2.1.缺少引用的编译错误 如图1所示的步骤2.7中,将官网的代码 ...

  3. 《算法竞赛入门经典训练指南》pdf

    下载地址:网盘下载 基本介绍 编辑 内容简介 <算法竞赛入门经典:训练指南>题目多选自近年来ACM/ICPC区域赛和总决赛真题,内容全面,信息量大,覆盖了常见算法竞赛中的大多数细分知识点. ...

  4. 算法竞赛入门经典——训练指南

    <算法竞赛入门经典--训练指南> 基本信息 作者: 刘汝佳 陈锋 [作译者介绍] 丛书名: 算法艺术与信息学竞赛 出版社:清华大学出版社 ISBN:9787302291077 上架时间:2 ...

  5. dqn在训练过程中loss越来越大_用DQN算法玩FlappyBird

    DQN算法可以用于解决离散的动作问题,而FlappyBird的操作正好是离散的. FlappyBird的游戏状态一般可以通过图像加卷积神经网络(CNN)来进行强化学习.但是通过图像分析会比较麻烦,因为 ...

  6. 训练指南第一部分解题报告

    主要是提供训练指南第一部分解题报告链接,后面会持续更新中 307 - Sticks  (DFS+剪枝) 11292 - Dragon of Loowater (贪心) 11729 - Commando ...

  7. 浅谈 翻硬币游戏【Nim博弈】

    ACM博客_kuangbin 博弈-翻硬币游戏 hihoCoder 1172 : 博弈游戏·Nim游戏·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Alice和B ...

  8. dqn在训练过程中loss越来越大_DQN算法实现注意事项及排错方法

    在学习强化学习过程中,自己实现DQN算法时,遇到了比较多的问题,花了好几天的时间才得以解决.最后分析总结一下,避免再走弯路. 有可能开始实现出来的DQN算法,无论怎么训练总是看不错成果.需要注意的地方 ...

  9. 51nod 1534 棋子游戏

    1534 棋子游戏 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 http://www.51nod.com/onlineJudg ...

  10. 算法竞赛训练指南代码仓库_数据仓库综合指南

    算法竞赛训练指南代码仓库 重点 (Top highlight) As a data scientist, it's valuable to have some idea of fundamental ...

最新文章

  1. Python 多线程抓取网页 牛人 use raw socket implement http request great
  2. 关于鸿蒙 2.0,那些开发者不知道的一切
  3. 推荐一个非常实用的导航路径规划网站
  4. Kali Linux缺少ifconfig命令
  5. Unity3D各平台路径(包括手机内置存储路径、SD卡等等)
  6. Stanford 研究领域
  7. 【CyberSecurityLearning 40】网络地址配置(Kali/CentOS)
  8. ストアドプロシージャ(存储过程)
  9. git clone 仓库的部分代码
  10. SAP Spartacus 读取 Cart 的原理分析
  11. java比较炫的登录界面_html+css实现漂亮的透明登录页面,HTML实现炫酷登录页面...
  12. IS-IS数据包--包头结构
  13. 如何用谷歌地图下载器下载大字体谷歌地图打印喷绘
  14. java 文字水印 旋转_java实现倾斜水印铺满整张图
  15. 愿天下有情人都是失散多年的兄妹
  16. 店盈通:拼多多新店怎么起步 ?四招教你解决
  17. 2018科大讯飞AI营销算法比赛笔记
  18. 02.Android崩溃Crash库之App崩溃分析
  19. 数据库:数据类型、数据项、数据元素、数据对象、数据结构的概念与相互之间的关系
  20. java 电子围栏_基于H5与webGL的 3d 电子围栏展示

热门文章

  1. c语言入门教程--1编译器
  2. matlab面板数据处理程序,MATLAB空间面板数据模型操作简介
  3. Android编程入门很简单pdf
  4. 计算机网络系统是由计算机系统,计算机网络由哪几部分组成?
  5. python for maya教程_Python for Maya 教程 – Artist Friendly Programming
  6. 计算机网路vlan划分练习
  7. VueScan Pro for Mac(万能扫描仪驱动程序)
  8. kali扫描内网ip_kali 局域网嗅探
  9. java多线程listview_Android_listview分页加载更多
  10. python程序写诗_用Python光速为你写诗