Portal

Description

两人轮流操作两堆初始数量分别为\(a,b(a,b\leq2^{127})\)的石子。每人每次进行如下操作:

  • 取走一堆石子,并将另一堆分成两个非零堆。
    如果另一堆只剩下一个石子了,那么目前操作的人获胜。求先手是否必胜。

Solution

先找一波规律。将当前的人必胜的状态称为\(N\)-position,必败的状态称为\(P\)-position,则:
\(P \ 1 - P(0,1)\)
\(N \ 2 - N(1,1)\)
\(N \ 3 - N(1,2)\)
\(P \ 4 - N(1,3),P(2,2)\)
\(P \ 5 - N(1,4),P(2,3)\)
\(...\)
前面的数字\(x\)表示得到了一个两堆和为\(x\)的状态时,是必胜还是必败。如果\(x\)至少有一种分拆是\(P\),那么\(x\)就是\(P\)。因为只要存在\(P\),对手就可以将这个\(P\)-position给你从而获胜。那么在一个状态中,如果两堆石子存在\(P\)那么该状态是\(N\),否则该状态是\(P\)。
找到的规律就是\(N\)-position和\(P\)-position是\(PNNPP\)五个一循环的。下面来证明一下。

依然是数学归纳法。
若对于正整数\(k\),\(\forall x \in [1,5k]\)结论成立。则
\(x,y\equiv0(mod\ 5),x+y=5k\)
\(P \ 5k+1 - N(x,y+1),N(x+2,y-1),P(x+3,y-2)\)
\(N \ 5k+2 - N(x,y+2),N(x+1,y+1),N(x+3,y-1)\)
\(N \ 5k+3 - N(x,y+3),N(x+1,y+2),N(x+4,y-1)\)
\(P \ 5k+4 - N(x,y+4),N(x+1,y+3),P(x+2,y+2)\)
\(P \ 5k+5 - N(x,y),N(x+1,y+4),P(x+2,y+3)\)
所以对于正整数\(k+1\),\(\forall x \in [1,5(k+1)]\)结论仍成立。
而\(k=1\)时结论成立(见上方),所以\(\forall x\in\mathbb{N}^*\),结论成立。

所以只要\(a,b\)中有一个模5余1,4,5就是先手必胜,否则后手必胜。

Code

不想写了

P.S.

hzwer的博弈论第一题就让我推了这么半天orz

Vijos1655 - 萌萌的糖果博弈的更多相关文章

  1. vijos 1655 萌萌的糖果博弈 博弈

    背景 用糖果来引诱小朋友学习是最常用的手法,绵羊爸爸就是用糖果来引诱萌萌学习博弈的. 描述 他把糖果分成了两堆,一堆有A粒,另一堆有B粒.他让萌萌和他一起按照下面的规则取糖果:每次可以任意拿走其中一堆 ...

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

    萌萌的糖果博弈 题目描述: 用糖果来引诱小朋友学习是最常用的手法,绵羊爸爸就是用糖果来引诱萌萌学习博弈的.他把糖果分成了两堆,一堆有A粒,另一堆有B粒.他让萌萌和他一起按照下面的规则取糖果:每次可以任 ...

  3. HDU 1907 Nim博弈变形

    1.HDU 1907 2.题意:n堆糖,两人轮流,每次从任意一堆中至少取一个,最后取光者输. 3.总结:有点变形的Nim,还是不太明白,盗用一下学长的分析吧 传送门 分析:经典的Nim博弈的一点变形. ...

  4. 糖果大战 hdu1204

    糖果大战 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  5. hdu 1907(Nim博弈)

    John Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submis ...

  6. hdu1907John(反nim博弈)

    John Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submis ...

  7. BZOJ 5046 分糖果游戏

    网页崩溃了 心态也崩溃了 MD劳资写了那么多 题意: 有a,b两个人分糖,每个人都有一个能量值.每个人每一轮可以选择进行两种操作: 1.取走最左边的糖果,补充相应的能量值并获取相应的美味度. 2.跳过 ...

  8. 原生js可爱糖果数字时间特效

    效果展示:http://hovertree.com/texiao/js/35/ 数字采用漂亮的糖果皮肤设计 效果图: 代码如下: <!DOCTYPE html> <html> ...

  9. hdu----(1849)Rabbit and Grass(简单的尼姆博弈)

    Rabbit and Grass Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

随机推荐

  1. 搭建一个高可用的redis环境

    一.环境准备 我的环境: Fedora 25 server  64位版 6台: 192.168.10.204 192.168.10.205 192.168.10.206 192.168.10.203 ...

  2. AJPFX关于java中的方法

    java中的方法和c语言中的函数类似,是新手入门面向对象之前的内容最大的难关如何写方法        1,明确返回值类型        2,明确参数列表 * 修饰符:目前就用 public stati ...

  3. 开始bootstrap的学习

    终于过完双十一,服务器顶住了压力,不知道为啥,突然的轻松,反而感觉有点无所适从,好久没写博客了,竟然发现还有人回我,很是开心,问题都是关于阿里云的,阿里云的吭确实多,其实关键在于,官方文档还是少,出了 ...

  4. 在Java8的foreach()中使用break、continue

    java8的lambda中,foreach()处理集合时不能使用break和continue这两个方法,可以使用return实现 参考:https://blog.csdn.net/lmy86263/a ...

  5. 架包Error inflating class错误

    当引用架包后,出现Error inflating class错误时通常要检测架包是否正确引用: 1.首先将你所需要的架包拷贝到工程目录下: 2.右击工程,选择Build Path-->confi ...

  6. http://blog.chinaunix.net/uid-9845710-id-1996675.html snmpd配置

    http://blog.chinaunix.net/uid-9845710-id-1996675.html http://lihuipeng.blog.51cto.com/3064864/643960 ...

  7. checking for gcc... no

    ./configure 后显示checking for gcc... nochecking for cc... nochecking for cl.exe... noconfigure.sh:erro ...

  8. mac下iterm2配置安装,通过expact实现保存账号,及通过跳板登陆配置

    在参考了几款mac不错的ssh工具外,最终选择使用iterm2.本来打算用FinalShell,安装后发现其icon在访达中根本不现实,而且每次访问还需要输入管理员账号密码,强迫症根本受不了... 官 ...

  9. laravel homestead comoser install 报错

    项目部署的时候composer install报错 说那个依赖包没有安装成功需要回滚删除但是删除不了 解决: 要配置共享文件 注:使用 NFS 的话,需要安装 vagrant-winnfsd 插件.该 ...

  10. core 中使用 nlog

    引包 代码 public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory logFac) ...