关于《训练指南》中的“翻棋子游戏”
刘汝佳的《训练指南》组合游戏部分中写了“翻棋子游戏”这样一个问题:一个棋盘上每个格子有一个棋子,每次操作可以随便选一个朝上的棋子(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。这时分两种情况:
- 如果(a,y)也是正面朝上,那么相当于删去了大小为x,y,a,y的四堆石子。设原所有石子堆的Nim和为K,则现在的Nim和变为K^x^y^a^y=K^x^a 这可以看成是一个Nim和为K的石子堆中去掉了一个大小为x的堆,而后又增添了一个大小为a的堆,也就相当于某个大小为x的堆去掉了x-a个石子。
- 如果(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
关于《训练指南》中的“翻棋子游戏”相关推荐
- 翻棋子游戏与Nim游戏
翻棋子游戏: 题意:一个棋盘上每个格子有一个棋子,每次操作可以随便选一个朝上的棋子(x,y),代表第i行第j列的棋子,选择一个形 如(x,b)或(a,y)(其中b < y,a < x)的棋 ...
- 虚幻4脱坑指南——官网C++编程教程中第一人称设计游戏教程的若干问题及解决方法
一.前言 我使用的虚幻4引擎版本为4.25.3,碰到的问题是针对官网C++编程教程中第一人称设计游戏教程出现的情况. 二.问题与实现 2.1.缺少引用的编译错误 如图1所示的步骤2.7中,将官网的代码 ...
- 《算法竞赛入门经典训练指南》pdf
下载地址:网盘下载 基本介绍 编辑 内容简介 <算法竞赛入门经典:训练指南>题目多选自近年来ACM/ICPC区域赛和总决赛真题,内容全面,信息量大,覆盖了常见算法竞赛中的大多数细分知识点. ...
- 算法竞赛入门经典——训练指南
<算法竞赛入门经典--训练指南> 基本信息 作者: 刘汝佳 陈锋 [作译者介绍] 丛书名: 算法艺术与信息学竞赛 出版社:清华大学出版社 ISBN:9787302291077 上架时间:2 ...
- dqn在训练过程中loss越来越大_用DQN算法玩FlappyBird
DQN算法可以用于解决离散的动作问题,而FlappyBird的操作正好是离散的. FlappyBird的游戏状态一般可以通过图像加卷积神经网络(CNN)来进行强化学习.但是通过图像分析会比较麻烦,因为 ...
- 训练指南第一部分解题报告
主要是提供训练指南第一部分解题报告链接,后面会持续更新中 307 - Sticks (DFS+剪枝) 11292 - Dragon of Loowater (贪心) 11729 - Commando ...
- 浅谈 翻硬币游戏【Nim博弈】
ACM博客_kuangbin 博弈-翻硬币游戏 hihoCoder 1172 : 博弈游戏·Nim游戏·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Alice和B ...
- dqn在训练过程中loss越来越大_DQN算法实现注意事项及排错方法
在学习强化学习过程中,自己实现DQN算法时,遇到了比较多的问题,花了好几天的时间才得以解决.最后分析总结一下,避免再走弯路. 有可能开始实现出来的DQN算法,无论怎么训练总是看不错成果.需要注意的地方 ...
- 51nod 1534 棋子游戏
1534 棋子游戏 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 http://www.51nod.com/onlineJudg ...
- 算法竞赛训练指南代码仓库_数据仓库综合指南
算法竞赛训练指南代码仓库 重点 (Top highlight) As a data scientist, it's valuable to have some idea of fundamental ...
最新文章
- Python 多线程抓取网页 牛人 use raw socket implement http request great
- 关于鸿蒙 2.0,那些开发者不知道的一切
- 推荐一个非常实用的导航路径规划网站
- Kali Linux缺少ifconfig命令
- Unity3D各平台路径(包括手机内置存储路径、SD卡等等)
- Stanford 研究领域
- 【CyberSecurityLearning 40】网络地址配置(Kali/CentOS)
- ストアドプロシージャ(存储过程)
- git clone 仓库的部分代码
- SAP Spartacus 读取 Cart 的原理分析
- java比较炫的登录界面_html+css实现漂亮的透明登录页面,HTML实现炫酷登录页面...
- IS-IS数据包--包头结构
- 如何用谷歌地图下载器下载大字体谷歌地图打印喷绘
- java 文字水印 旋转_java实现倾斜水印铺满整张图
- 愿天下有情人都是失散多年的兄妹
- 店盈通:拼多多新店怎么起步 ?四招教你解决
- 2018科大讯飞AI营销算法比赛笔记
- 02.Android崩溃Crash库之App崩溃分析
- 数据库:数据类型、数据项、数据元素、数据对象、数据结构的概念与相互之间的关系
- java 电子围栏_基于H5与webGL的 3d 电子围栏展示
热门文章
- c语言入门教程--1编译器
- matlab面板数据处理程序,MATLAB空间面板数据模型操作简介
- Android编程入门很简单pdf
- 计算机网络系统是由计算机系统,计算机网络由哪几部分组成?
- python for maya教程_Python for Maya 教程 – Artist Friendly Programming
- 计算机网路vlan划分练习
- VueScan Pro for Mac(万能扫描仪驱动程序)
- kali扫描内网ip_kali 局域网嗅探
- java多线程listview_Android_listview分页加载更多
- python程序写诗_用Python光速为你写诗