题目链接:http://lx.lanqiao.cn/problem.page?gpid=T37

题目大意:有个阶梯,上面有些僧人,大师指挥他们。僧人只能向上走,并且不能站在一起或者超越高层的僧人。最高层的僧人不能动。在这些条件下,大师指挥他们任何一个(除了最高层的)走任意级台阶,当没有僧人能指挥时,游戏结束,遇到这种情况的大师告败。

关键思想:考虑到最低的僧人与最高的僧人相差台阶数是在不断减小的。移动一个僧人的时候,与上方的僧人距离减小,与下方的僧人距离增大。突发奇想出Nim博弈的模型{

      不如从低到高,每两个僧人配对(无重复),他们之间的距离看作是石子数,然后进行nim博弈。

      搬运justPassBy的博客中的解释

    

          

        我们可以将人从前往后两两配对,在同一对人中,如果对手移动后一个人,你总能移动前一个相同的步数,

        所以一对人的后一个人与后面一对人的前一个人有多少台阶是没有影响的。

        所以只要考虑同一对人之间有多少台阶就行了,这样就转化为了Nim游戏。

        如图: a与b配对, c与d配对 ,那么b与c之间的台阶是没有影响的,无论b怎么移动,a总能够移动相同的步数。

可以发现,我们这个Nim博弈和原始版本的Nim区别就在于有些缓冲的操作(不玩~玩嘛~不玩~玩嘛),而且石子数可以增加,但胜负条件是不变的,因为胜败格局的转移是双向的。

代码如下:

#include <iostream>
#include <algorithm>
using namespace std;const int N=1010; int main(){int a[N],b[N],cnt1=0,cnt2=0;for(cnt=0;cin>>a[cnt];cnt++);sort(a,a+cnt);    //输入似乎是有序的,可以不加 int XOR=0;        //各个有效距离的异或 for(int i=0;i<cnt1-1;i++,cnt2++){b[i]=a[i+1]-a[i]-1;//b[i]存储没两个点之间的距离,但有效的只有下标为偶数的距离 if(i%2==0)XOR^=b[i];//只对有效距离异或
    }if(XOR==0)cout<<-1<<endl;else{for(int i=0;i<cnt2;i+=2){//考虑每个有效距离 if((XOR^b[i])<b[i]){    //如果需要的距离小于有效距离 cout<<a[i]<<" "<<a[i]+b[i]-(XOR^b[i])<<endl;//移动左边的点 break;}else if((XOR^b[i])<=b[i]+b[i+1]){    //如果需要的距离大于有效距离但是可以向右扩展 cout<<a[i+1]<<" "<<a[i]+(XOR^b[i])+1<<endl;//移动右边的点 break;}}    }return 0;
} 

转载于:https://www.cnblogs.com/G-M-WuJieMatrix/p/7244525.html

蓝桥杯 [高僧斗法] Nim博弈相关推荐

  1. 蓝桥杯 历届试题 高僧斗法(Nim博弈)

    问题描述 古时丧葬活动中经常请高僧做法事.仪式结束后,有时会有"高僧斗法"的趣味节目,以舒缓压抑的气氛. 节目大略步骤为:先用粮食(一般是稻米)在地上"画"出若 ...

  2. 高僧斗法 nim博弈

    标题:高僧斗法 古时丧葬活动中经常请高僧做法事.仪式结束后,有时会有"高僧斗法"的趣味节目,以舒缓压抑的气氛.节目大略步骤为:先用粮食(一般是稻米)在地上"画" ...

  3. 蓝桥杯 2016-9 取球博弈

    题目描述 两个人玩取球的游戏. 一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目. 如果无法继续取球,则游戏结束. 此时,持有奇数个球的一方获胜. 如果两人都是奇数,则为平 ...

  4. 2012蓝桥杯预赛--取球博弈

    题目描述 今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断.     我们约定:     每个人从盒子 ...

  5. [蓝桥小记]蓝桥杯参赛经历分享

    <蓝桥小记>         蓝桥杯省赛从9:00-13:00历时4个小时,今年(2018年)的题和去年的题差不多有易有难,整体来说今年出的题即使做不出来也会让你觉得比较生动有趣味性,可能 ...

  6. 蓝桥杯-c语言 高僧斗法

    高僧斗法 题目描述: 问题描述古时丧葬活动中经常请高僧做法事.仪式结束后,有时会有"高僧斗法"的趣味节目,以舒缓压抑的气氛.节目大略步骤为:先用粮食(一般是稻米)在地上" ...

  7. 蓝桥杯 历届试题 高僧斗法

    问题描述 古时丧葬活动中经常请高僧做法事.仪式结束后,有时会有"高僧斗法"的趣味节目,以舒缓压抑的气氛. 节目大略步骤为:先用粮食(一般是稻米)在地上"画"出若 ...

  8. 蓝桥杯题解-高僧斗法

    题目 高僧斗法 古时丧葬活动中经常请高僧做法事.仪式结束后,有时会有"高僧斗法"的趣味节目,以舒缓压抑的气氛. 节目大略步骤为:先用粮食(一般是稻米)在地上"画" ...

  9. 蓝桥杯历届试题 高僧斗法?

    问题描述 古时丧葬活动中经常请高僧做法事.仪式结束后,有时会有"高僧斗法"的趣味节目,以舒缓压抑的气氛. 节目大略步骤为:先用粮食(一般是稻米)在地上"画"出若 ...

最新文章

  1. 如何在centos7下tomcat中安装https
  2. Vmware 没有vmnet8虚拟网卡、解决方法就是:刷机
  3. C# WebProxy POST 或者 GET
  4. 【AIX 命令学习】lsattr 显示一个给定设备或一种设备的属性
  5. 构建Java Web应用程序时遵循MVC的三个步骤
  6. corpus  academic writing
  7. 胃癌2019csco指南_2019 CSCO胃癌诊疗指南精华来了!
  8. 富文本编辑器 CKeditor 配置使用
  9. 基于 Android Architecture Components 的 MVVM 浅析
  10. 297 - Quadtrees
  11. Harmony OS — TabList和Tab分页栏
  12. Linux环境下Lapack软件包的编译和使用
  13. 自定义jQuery翻页插件
  14. Chrome浏览器添加fehelper插件
  15. 计算机文本自定义,自定义文本编辑器
  16. 阿里云发生故障,网友炸了,官方回应道歉。对此事你怎么看?
  17. input文本框隐藏边框
  18. 每一个都能笑抽的 39 个奇葩代码注释
  19. unity学习之动画状态切换后角色沉入地面里面
  20. 万字详解大数据平台异地多机房架构实践

热门文章

  1. 程序员励志:哈佛校训
  2. python扫描二维码输出内容_python如何实现二维码的生成和识别
  3. 南阳779 兰州烧饼
  4. 又一行业盛会落地深圳!世链“FAF世界区块链3000人大会”全网热度领先
  5. 区块链受到热捧实际落地尚有距离
  6. Deep SORT: Simple Online and Realtime Tracking with a Deep Association Metric(论文阅读笔记)(2017CVPR)
  7. ByPASS系列之安全狗
  8. 在COBOL中调用REXX脚本[转载]
  9. 开发者必知的KPI概念和用法
  10. WebSocket connection to ‘ws://localhost:3000/ws‘ failed: Error in connection establishment: net::ERR