阶梯博弈(Staircase Nim)
POJ 1704
【题意】
从左到右有一排石子,给出石子所在的位置。规定每个石子只能向左移动,且不能跨过前面的石子。最左边的石子最多只能移动到1位置。每次选择一个石子按规则向左移动,问先手是否能赢。
【分析】
我们把棋子按位置升序排列后,从后往前把他们两两绑定成一对。如果总个数是奇数,就把最前面一个和边界(位置为0)绑定。
在同一对棋子中,如果对手移动前一个,你总能对后一个移动相同的步数,所以一对棋子的前一个和前一对棋子的后一个之间有多少个空位置对最终的结果是没有影响的。
于是我们只需要考虑同一对的两个棋子之间有多少空位。
这样一来就成了N堆取石子游戏了.
HDU 4315
【题意】
有N个人爬山,山顶坐标为0,其他人的坐标按升序给出。不同的坐标只能容纳一个人(山顶不限),Alice和Bob轮流选择一个人让他移动任意步,但不能越过前面那个人。现在有一个人是king(给出id),谁能将king移动到山顶就算赢。
【分析】
考虑King的情况和上述版本几乎一致,只要把King当作普通人一样处理即可。
除了两种特殊情况:
1. 当King是第一个人时,Alice直接胜
2. 当King是第二个人且一共有奇数个人时,第一堆的大小需要减1。
因为如果king在奇数石子上,那么king前面的那一对石子k1,k2.
当对方把k1移到top时,我可以把k2移到top前的一个位置.
那么对于k2石子,对方如果碰了它,那么我肯定会把king移到top的.
所以k2也相当于是一颗废子而已,不影响最终Nim的结果.
阶梯博弈(Staircase Nim)相关推荐
- 我谈阶梯博弈( Staircase Nim )
今天在POJ做了一道博弈题..进而了解到了阶梯博弈...下面阐述一下我对于阶梯博弈的理解.. 首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈... ...
- 我谈阶梯博弈(Staircase Nim)
今天在POJ做了一道博弈题..进而了解到了阶梯博弈...下面阐述一下我对于阶梯博弈的理解.. 首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈. ...
- 【小组专题二:博弈论入门综述(1)】NP状态 | SG函数 | 巴什博奕、威佐夫博弈、斐波那契博弈、Nim游戏、SJ定理
博弈论综述[1] 前言 博弈与博弈论 博弈树 NP状态 SG函数(Sprague-Grundy) Sprague-Grundy Theorem 巴什博奕 Bash Game 威佐夫博弈 扩展威佐夫博弈 ...
- Poj1704:staircase nim【博弈】
题目大意:有一个无限长的一维的棋盘,棋盘上N个格子放置着棋子.两个人轮流操作,每次操作能选择其中一个棋子向左移动,但不能越过其它棋子或者两枚棋子放在同一格中,最后不能操作的人算输,问先手是否必胜? 思 ...
- Nim问题和阶梯Nim(staircase nim)
Nim问题和阶梯Nim(staircase nim) Nim问题: 有若干堆石子,每堆石子的数量都是有限的,合法的移动是"选择一堆石子并拿走若干颗(不能不拿)",如果轮到某个人时所 ...
- 博弈问题总集第三类----Staircase Nim
这一关我们上楼梯玩... 阶梯博弈是这样一个模型:有一个n层的台阶,每个台阶上都放有一定数量的石子.每次每个玩家可以选取某一层上任意数量的石子移动到下一层,不能操作的人输. 嗯这个问题看起来很复杂?我 ...
- staircase nim 经典组合游戏
游戏开始时有许多硬币任意分布在楼梯上,共n阶楼梯从地面由下向上编号为0到n.游戏者在每次操作时可以将楼梯j(1<=j<=n)上的任意多但至少一个硬币移动到楼梯j-1上.游戏者轮流操作,将最 ...
- HDU3389(阶梯博弈)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3389 题意:1-N带编号的盒子,当编号满足A>B && A非空 && ...
- P3480-[POI2009]KAM-Pebbles【阶梯博弈】
正题 题目链接:https://www.luogu.com.cn/problem/P3480 题目大意 nnn个石头堆上进行Nim\text{Nim}Nim游戏,不过需要满足每次操作前后都有ai≤ai ...
最新文章
- ListView 添加头部 和尾部 布局 (addHeaderView 和 addFooterView)
- javascript与java的不同之处
- Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图、垂直条形图、分组条形图、堆叠条形图
- 干货 | 一致性算法与区块链基础设施建设(附PPT)
- 自制树莓派“防松鼠神器”在Reddit火了,13行代码就能让AI替你护食,成本300+元...
- 用python爬取网站数据期末作业_python实战第一周作业:爬取一页商品数据
- Fedora开启telnet服务
- jsonProperty
- 使用 json_serializable (flutter packages pub run build_runner build) 问题
- python应用领域介绍
- C++ primer 第14章 操作重载与类型转换
- java对象深克隆_JAVA中对象的克隆及深拷贝和浅拷贝
- 的一致性哈希_五分钟看懂一致性哈希算法
- 人脸对齐(十六)--DenseFA
- 这本书,值2000亿!
- eclipse配置java环境变量_eclipse配置环境变量
- axure文件如何加密_Axure发布到AxShare的加密与非加密方案 | 人人都是产品经理
- 魔兽世界稳定服务器,魔兽世界美服服务器趋于稳定 排队新技术将实装
- 敏捷开发中的文档怎么写
- 大数据四大阵营之OLTP阵营(上)
热门文章
- 投资组合管理-风险分散与马科维茨均值方差模型
- Jboot v1.4.0 新增分库分表及 websocket 相关 demo
- Java虚拟机启动整体流程和基础学习(内容很多,不可快餐阅读),推理+源码论证
- win10 支持ubuntu命令行的版本1607 产品密匙
- 微信扫码点餐小程序怎么做,一步步教你
- 计算机休眠会断电吗,电脑「睡眠」和「休眠」原来有这么大区别,下次别用错了。...
- Kotlin高仿微信-第14篇-单聊-视频通话
- 支付宝 二维码/账号/转账码/生成方式/生成不可修改金额码
- 傻瓜式PHP模版,poscms傻瓜式开发模块
- Fiddler环境配置/代理设置:电脑端/移动端/模拟器