萌萌的糖果博弈

题目描述:

用糖果来引诱小朋友学习是最常用的手法,绵羊爸爸就是用糖果来引诱萌萌学习博弈的。他把糖果分成了两堆,一堆有A粒,另一堆有B粒。他让萌萌和他一起按照下面的规则取糖果:每次可以任意拿走其中一堆糖果;如果这时候另一堆糖果数目多于1粒,就把它任意分成两堆,否则就把剩下的一粒糖果取走并获得这次博弈的胜利。胜利者将获得所有的糖果。萌萌想要得到所有的糖果,而绵羊爸爸想把糖果留下以便下一次利用。现在由萌萌先取糖果,旁观的小朋友们想知道萌萌是否有必胜策略。

输入格式:

本题有多组测试数据(不超过100组)。每组数据包括两行,第一行为A,第二行为B。1 ≤ A,B ≤ 2^127。输入数据以一个 -1 结束。

输出格式:

每组数据对应一行输出。如果萌萌获胜则输出”MengMeng”,否则输出”SheepDaddy”(不包括引号)。

样例输入:

  1. 1
  2. 2
  3. 2
  4. 3
  5. -1

样例输出:

  1. MengMeng
  2. SheepDaddy

时间限制:1000ms
空间限制:256MByte

哇,这题感觉是做过的题目中最难的了(博弈论),看了题解的结论之后想了好久才想出来证明方法。。。QAQ。。。我还是太弱了!!!

解法是很简单的(博弈论好像都这样),但是证明真的难死人啊!!!

解法就是两个数都满足%5==3 或者 == 2 就是后手SheepDaddy赢;其他情况是另一个赢/。。。

下面来证明一下解法:

首先证明一个结论:当两个数其中一个是1或者4或者5的时候,先手必胜。这个还是比较好证明的,有两个数A和B,A满足前面的条件,那么你把B拿走,把A分掉就了;注意,如果PERSON1拿完一堆之后剩下一堆的糖果数是1那么PERSON1赢(之前理解错了QAQ)接下来假设有两个人PER1,PER2,这时候有两堆石子,PER1拿完一堆之后另一堆的VAL%5==2或者3;那么PER2有必胜策略!

证明如下:将VAL分了之后肯定有一堆%5!=3或者2。这时候,PER2把这一堆留下,必然可以分成两堆(VAL1,VAL2)并且满足VAL1/2 %5 == 2 或者3;

(自己按着%5为0,1,4分别讨论一下就好了)

那么迟早会有一次在PER2回合VAL==1或者2或者5,就必胜了!

知道了这个还没有用,还要把这个用起来。。。我们考虑第二个人如何有必胜策略,那么就简单了,满足解法的条件就好了呀,不管PER1取那一堆,剩下一堆总会%5==2或者3,就必胜了。然后PER2没有必胜策略的情况就是PER1的必胜情况了。

累死!上代码,超级短。。。

  1. #include<iostream>
  2. using namespace std;
  3. string a,b;
  4. int as,bs;
  5. int main(){
  6. while(cin >> a)
  7. {
  8. if(a == "-1") return ;
  9. cin >> b;
  10. as = a[a.length() - ] - '';
  11. bs = b[b.length() - ] - '';
  12. if((as % == || as % == ) && (bs % == || bs % == )) cout << "SheepDaddy" << endl;
  13. else cout << "MengMeng" << endl;
  14. }
  15. }

写的累死人了,不写了。。。

靠!老师居然叫我们去写博弈论!!!结果写了一个晚上的博弈论,简直要死QAQ。。。发发博客休息一下。。。TAT。。。的更多相关文章

  1. 配置Windows Live Writer,写cnblogs博客

    引言        以前写博客一般都是联网在cnblogs上面写,不好的地方就是不联网就写不了,当然我们也可以先记录在word文件,等联网在从word里面拷贝出来发布到cnblogs上面,但是样式这些 ...

  2. 配置WindowsLiveWriter,写cnblogs博客

    转载:http://www.haogongju.net/art/2307587 引言 以前写博客一般都是联网在cnblogs上面写,不好的地方就是不联网就写不了,当然我们也可以先记录在word文件,等 ...

  3. 【原创】配置Windows Live Writer,写cnblogs博客

    20180115更新补充: 现在live writer已经改名open live writer了,需要去下载的到地址:http://openlivewriter.org/ 引言 以前写博客一般都是联网 ...

  4. 使用Typora写博客,图片即时上传,无需第三方图床-EasyBlogImageForTypora

    背景 习惯使用markdown的人应该都知道Typora这个神器,它非常简洁高效.虽然博客园的在线markdown编辑器也不错,但毕竟是网页版,每次写东西需要登录系统-进后台-找到文章-编辑-保存草稿 ...

  5. 第一次写博客,就写如何向外行介绍自己做的是什么,那个我是做web的

    如果想外行问你是做什么的,改如何回答.和内行说java后台就可以了,但外行听不懂,我们该如何描述呢? 我的方法是:我做的是java web开发,不是内外的外,是个英文单词web,全名叫world wi ...

  6. 如果简单的记录,就可以为这个世界创造更多的财富,那么还有什么理由不去写博客呢? — 读<<黑客与画家>> 有感

    上一次博文发文时间是2016.1.15,7个月已经过去了.最近读了一本<>的书,对我触动挺大的!里面有关于技术趋势的探讨,也有关于人生和财富的思考! 开始更新iOS122的文章的初衷是,聚 ...

  7. (转)[BetterExplained]为什么你应该(从现在开始就)写博客

    (一)为什么你应该(从现在开始就)写博客 用一句话来说就是,写一个博客有很多好处,却没有任何明显的坏处.(阿灵顿的情况属于例外,而非常态,就像不能拿抽烟活到一百岁的英国老太太的个例来反驳抽烟对健康的极 ...

  8. 《REWORK》启示录 招聘笔杆子——程序员为什么值得写博客

    Hire Great Writers 仿佛这是写给自己看的,不过这在其中也有着相当有趣的意义 .虽然自己算是一个能写的人,或许这算是一种不算才华的才华,写博文的意义通常不会在于去描述自己怎样,怎样.通 ...

  9. 写博客 Why?

    博客?英文名字为blogger,它是一种网络日记. 一.我为什么要写博客? 这是我第一回写博客,写的可能不是非常的好,请多多给些意见.在平常的学习的时候,我怕忘掉自己学的知识,常常都会记录下来,但回头 ...

随机推荐

  1. CSS3——盒子模型 border(边框) 轮廓(outline)属性 margin外边距 padding填充

    盒子模型 包括——边距,边框,填充,和实际内容 Margin(外边距) - 清除边框外的区域,外边距是透明的. Border(边框) - 围绕在内边距和内容外的边框. Padding(内边距) - 清 ...

  2. Matlab——图形绘制——三维立体图形 剔透玲珑球 动态图——彗星状轨迹图

    三维绘图函数 三维绘制工具 函数view 实例:三维螺旋线 >> t=:pi/:*pi; plot3(sin(t),cos(t),t) grid %添加网格  plot3可以画出空间中的曲 ...

  3. unity shader 热扭曲 (屏幕后处理)

      效果: c# using System; using System.Collections; using System.Collections.Generic; using UnityEngine ...

  4. LeetCode算法题-Most Common Word(Java实现)

    这是悦乐书的第321次更新,第342篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第190题(顺位题号是819).给定一个段落和一组禁止词,返回不在禁止词列表中的最常用词 ...

  5. Linux setup

    Install centos 7: Config Network a config example in /etc/sysconfig/network-scripts/ifcfg-ens160 TYP ...

  6. 4.站点克隆wget----隐写术图片----backbox linux

    站点克隆wget sudo bash cd Desktop/Cloned wget -h clear wget -mk https://help.ubuntu.com/ 隐写术图片 想想朋友圈的图片 ...

  7. Android - Android 面试题集 -- Android 部分答案

    2.1 Activity1.Activity是什么?Activity是Android的四大组件之一.是用户操作的可视化界面:它为用户提供了一个完成操作指令的窗口.当我们创建完毕Activity之后,需 ...

  8. 命令行模式和Python交互模式的区别

    1.命令行模式: 在Windows开始菜单选择“命令提示符”,就进入到命令行模式,它的提示符类似C:\Users\>: 2.python交互模式 在命令行模式下敲命令python,就看到类似如下 ...

  9. composer安装thinkphp5

    之前安装过composer,里面的一些命令符可以看看,安装tp5我也是按照文档来的,也没什么难度.但是也出现一些问题: 安装tp5: 安装在本地php环境的www目录下,通过命令窗口切换到www目录下 ...

  10. yaf框架安装

    第一步:明白yaf框架是以扩展的形式要先配置到php里面,对于windows系统的使用者,首先要去官网:http://code.google.com/p/yafphp/downloads/list如果 ...