zoukankan      html  css  js  c++  java
  • 学习笔记 巴什博弈

    巴什博奕

    开始之前

    先来一个简化版本(小学奥赛版本):
    
    某毒瘤给hsez2017级信息奥赛生一堆胸牌 共n个
    
    而且十分大方 这个n是<=10^6滴
    
    每一次只可以取一个或者两个
    
    规定取走最后一个的人是胜者
    
    现在zmj与leizi玩这个游戏
    
    由于zmj有一对"沙包大的拳头",所以leizi让zmj先取
    
    但是由于zmj输了 就会给leizi一大把麻花
    
    所以leizi要求多玩几局
    
    请问:zmj是否存在必胜策略????
    
    

    请您多想一想否则游戏玩完就等于zmj的麻花玩完

    其实十分好想的

    只有一个胸牌时 zmj赢然后被leizi打残

    只有两个胸牌时 zmj赢然后被leizi打残

    只有三个胸牌时 zmj取一个还是取两个最后都是leizi取光

    即leizi最后赢然后把zmj打残

    那么我们扩展一下

    很显然 我们可以把胸牌分一下

    每为好几个为3的胸牌堆

    以及剩下一个余为0或1或2的胸牌堆

    这样的话 就只有两种情况

    1.余为0的话 每一次zmj取一个leizi就取两个

    每一次zmj取两个leizi就取一个

    ......

    最后保证leizi取走了最后一个

    2.余不为0的话

    一开始zmj用TA那"沙包大的拳头"取走一个残堆

    然后每一次leizi取一个zmj就取两个

    每一次leizi取两个zmj就取一个

    ......

    最后保证zmj取走了最后一个

    但是无论怎麽样最后zmj的麻花还是扑街

    这样的话我们就可以透彻巴什博奕了

    开始正式的YY

    这一次kmt又送了一大包胸牌 共n个
    
    而且n还是<=10^6滴
    
    每一次最少取1个 最多取m个
    
    两个人轮流取 规定谁取走最后一个就是人生赢家
    
    那么先手胜 条件就是:n%(m+1)!=0;
    
    后手胜的条件自然就是n%(m+1)==0
    
    
    

    -----------------------------------下划线-------------------------------------------

    其实TA还有一个变种

    那就是 谁取到最后一个谁输

    我们思考一下现在该怎么办???

    心理学分析:
    
    如果先手要赢的话 就要等到后手拿时 只有一个
    
    后手同理
    
    所以最后的规律就是
    
    (n-1)%(m+1)==0 ? 后手胜 : 先手胜
    

    个人认为:

    巴什博奕算得上是最古老的也是最简单的博弈之一了

    例题

    【HDU1846】

    【HDU4764】

  • 相关阅读:
    Asp.Net上传大文件(页面超时)
    C#文件的大小
    设计模式简单工厂、工厂方法、抽象工厂方法
    设计模式迭代器模式
    Asp.Net下载文件
    设计模式桥接模式
    CSS尺寸(Dimensions)
    设计模式单件模式
    Android 换肤
    像QQtab切换效果的例子
  • 原文地址:https://www.cnblogs.com/LovToLZX/p/13757522.html
Copyright © 2011-2022 走看看