阶梯博弈!!!下面阐述一下我对于阶梯博弈的理解..

  首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈...每一步则是将一个集体上的若干个点( >=1 )移到前面去..最后没有点可以移动的人输..

如这就是一个阶梯博弈的初始状态 2 1 3 2 4 ... 只能把后面的点往前面放...如何来分析这个问题呢...其实阶梯博弈经过转换 可以变为Nim.. 把所有奇数阶梯看成N堆石子..做nim..把石子从奇数堆移动到偶数堆可以理解为拿走石子..就相当于几个奇数堆的石子在做Nim..( 如所给样例..2^3^4=5 不为零所以先手必败)为什么可以这样来转化?
     假设我们是先手...所给的阶梯石子状态的奇数堆做Nim先手能必胜...我就按照能赢的步骤将奇数堆的石子移动到偶数堆...如果对手也是移动奇数堆..我们继续移动奇数堆..如果对手将偶数堆的石子移动到了奇数堆..那么我们紧接着将对手所移动的这么多石子从那个偶数堆移动到下面的奇数堆...两次操作后...相当于偶数堆的石子向下移动了几个..而奇数堆依然是原来的样子...即为必胜的状态...就算后手一直在移动偶数堆的石子到奇数堆..我们就一直跟着他将石子继续往下移..保持奇数堆不变...如此做下去..我可以跟着后手把偶数堆的石子移动到0..然后你就不能移动这些石子了... 所以整个过程..将偶数堆移动到奇数堆不会影响奇数堆做Nim博弈的过程..整个过程可以抽象为奇数堆的Nim博弈...
     其他的情况...先手必输的...类似推理...只要判断奇数堆做Nim博弈的情况即可...
     为什么是只对奇数堆做Nim就可以...而不是 偶数堆 呢?...因为如果是对偶数堆做Nim...对手移动奇数堆的石子到偶数堆..我们跟着移动这些石子到下一个奇数堆...那么最后是对手把这些石子移动到了0..我们不能继续跟着移动...就只能去 破坏原有的Nim而导致胜负关系的不确定 ...所以 只要对奇数堆做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)相关推荐

  1. 我谈阶梯博弈( Staircase Nim )

    今天在POJ做了一道博弈题..进而了解到了阶梯博弈...下面阐述一下我对于阶梯博弈的理解.. 首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈... ...

  2. 我谈阶梯博弈(Staircase Nim)

    今天在POJ做了一道博弈题..进而了解到了阶梯博弈...下面阐述一下我对于阶梯博弈的理解..   首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈. ...

  3. 【小组专题二:博弈论入门综述(1)】NP状态 | SG函数 | 巴什博奕、威佐夫博弈、斐波那契博弈、Nim游戏、SJ定理

    博弈论综述[1] 前言 博弈与博弈论 博弈树 NP状态 SG函数(Sprague-Grundy) Sprague-Grundy Theorem 巴什博奕 Bash Game 威佐夫博弈 扩展威佐夫博弈 ...

  4. Poj1704:staircase nim【博弈】

    题目大意:有一个无限长的一维的棋盘,棋盘上N个格子放置着棋子.两个人轮流操作,每次操作能选择其中一个棋子向左移动,但不能越过其它棋子或者两枚棋子放在同一格中,最后不能操作的人算输,问先手是否必胜? 思 ...

  5. Nim问题和阶梯Nim(staircase nim)

    Nim问题和阶梯Nim(staircase nim) Nim问题: 有若干堆石子,每堆石子的数量都是有限的,合法的移动是"选择一堆石子并拿走若干颗(不能不拿)",如果轮到某个人时所 ...

  6. 博弈问题总集第三类----Staircase Nim

    这一关我们上楼梯玩... 阶梯博弈是这样一个模型:有一个n层的台阶,每个台阶上都放有一定数量的石子.每次每个玩家可以选取某一层上任意数量的石子移动到下一层,不能操作的人输. 嗯这个问题看起来很复杂?我 ...

  7. staircase nim 经典组合游戏

    游戏开始时有许多硬币任意分布在楼梯上,共n阶楼梯从地面由下向上编号为0到n.游戏者在每次操作时可以将楼梯j(1<=j<=n)上的任意多但至少一个硬币移动到楼梯j-1上.游戏者轮流操作,将最 ...

  8. HDU3389(阶梯博弈)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3389 题意:1-N带编号的盒子,当编号满足A>B && A非空 && ...

  9. P3480-[POI2009]KAM-Pebbles【阶梯博弈】

    正题 题目链接:https://www.luogu.com.cn/problem/P3480 题目大意 nnn个石头堆上进行Nim\text{Nim}Nim游戏,不过需要满足每次操作前后都有ai≤ai ...

最新文章

  1. ListView 添加头部 和尾部 布局 (addHeaderView 和 addFooterView)
  2. javascript与java的不同之处
  3. Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图、垂直条形图、分组条形图、堆叠条形图
  4. 干货 | 一致性算法与区块链基础设施建设(附PPT)
  5. 自制树莓派“防松鼠神器”在Reddit火了,13行代码就能让AI替你护食,成本300+元...
  6. 用python爬取网站数据期末作业_python实战第一周作业:爬取一页商品数据
  7. Fedora开启telnet服务
  8. jsonProperty
  9. 使用 json_serializable (flutter packages pub run build_runner build) 问题
  10. python应用领域介绍
  11. C++ primer 第14章 操作重载与类型转换
  12. java对象深克隆_JAVA中对象的克隆及深拷贝和浅拷贝
  13. 的一致性哈希_五分钟看懂一致性哈希算法
  14. 人脸对齐(十六)--DenseFA
  15. 这本书,值2000亿!
  16. eclipse配置java环境变量_eclipse配置环境变量
  17. axure文件如何加密_Axure发布到AxShare的加密与非加密方案 | 人人都是产品经理
  18. 魔兽世界稳定服务器,魔兽世界美服服务器趋于稳定 排队新技术将实装
  19. 敏捷开发中的文档怎么写
  20. 大数据四大阵营之OLTP阵营(上)

热门文章

  1. 投资组合管理-风险分散与马科维茨均值方差模型
  2. Jboot v1.4.0 新增分库分表及 websocket 相关 demo
  3. Java虚拟机启动整体流程和基础学习(内容很多,不可快餐阅读),推理+源码论证
  4. win10 支持ubuntu命令行的版本1607 产品密匙
  5. 微信扫码点餐小程序怎么做,一步步教你
  6. 计算机休眠会断电吗,电脑「睡眠」和「休眠」原来有这么大区别,下次别用错了。...
  7. Kotlin高仿微信-第14篇-单聊-视频通话
  8. 支付宝 二维码/账号/转账码/生成方式/生成不可修改金额码
  9. 傻瓜式PHP模版,poscms傻瓜式开发模块
  10. Fiddler环境配置/代理设置:电脑端/移动端/模拟器