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. 代码文件导到word里

    # 创建并写入word文档 import docx import sys import os dir = "D:\\gitwork\\fm.qimeng.c-class\\src\\main ...

  2. 【学习笔记】深入理解js原型和闭包(8)——简述【执行上下文】上

    什么是“执行上下文”(也叫做“执行上下文环境”)?暂且不下定义,先看一段代码: 第一句报错,a未定义,很正常.第二句.第三句输出都是undefined,说明浏览器在执行console.log(a)时, ...

  3. Java子类与父类方法的隐藏和覆盖

    class Base{     int x = 1;     static int y = 2;     String name(){         return "mother" ...

  4. SQL Server 2012使用OFFSET/FETCH NEXT分页及性能测试

    最近在网上看到不少文章介绍使用SQL Server 2012的新特性:OFFSET/FETCH NEXT 实现分页.多数文章都是引用或者翻译的这一篇<SQL Server 2012 - Serv ...

  5. File.Exists 文件不存在 Or FileNotFoundException

    标题警告,本文仅限走投无路,最终可能的一个问题导致. 最开始出现在找不到文件,测试发现: 看起来毫无毛病 而后各种测试: 注意看,第一行跟第三行一模一样 发现[@"‪‪‪]这两个字符有毒,如 ...

  6. vue-cli下面的config/index.js注解 webpack.base.conf.js注解

    config/indexjs详解上代码: 'use strict' // Template version: 1.3.1 // see http://vuejs-templates.github.io ...

  7. vue2.0组件生命周期探讨

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. 移动端超级好用的reset.css(只做参考哦具体以你们实际项目需求为准)

    html { color: #333; /*规定主色调,依据业务场景(非必须)*/ background: #F6F6F6; /*规定主背景,依据业务场景(非必须)*/ overflow-y: aut ...

  9. Android接入支付宝和微信支付

    然后把下载下来的aar包,放到项目目录下面的libs目录下,通过下面的gradle依赖进来 // 支付宝 SDK AAR 包所需的配置compile(name: 'alipaySdk-15.6.0-2 ...

  10. Matlab 图像转极坐标系

    实心圆环 imgVP1=flip(imgVP1,1);  % 水平翻转 polarVP1=polarVolinPlot(imgVP1); % 调用函数空心圆环 [m,n,~]=size(imgVP2) ...