每天一道博弈论之“巴什博弈”

本文介绍了两种石子游戏的胜负判断方法。一种是玩家可取1到m个石子的游戏,另一种是玩家可取2的次幂数量石子的游戏。通过分析,给出了简单有效的胜负判断策略。

   由于明天开学,不一定有时间写博客,故今天一次写两道题qaq

q1:

   题意:

   一堆n个石子,可以取1,2,3...m个,双方轮流取,给你n和m,问先手胜还是后手胜

  题解:

   易得当n%(m+1)==0时后手必胜,否则先手胜。假如对方取x个,你就取(m+1-x)个,使得对手面对的数一直是(m+1)的倍数,当最终对手面对m+1时,显然他已经输了。

 

q2:

  题意:

   一堆n个石子,可以取1,2,4,8...(2的次幂)个,给你n,问先手胜还是后手胜

  题解:

   首先我们可以考虑根据SG函数,可以在O(nlogn)的复杂度内算出答案。这种做法大概可以解决n<=10^5的数据。那么n很大怎么办呢?有没有O(1)的做法呢?

   当然有啦^_^

   请考虑上面一题中用到的技巧。我们可以发现2的次幂在mod3的意义下只可能是1或者2(没有0),所以我们猜想是不是n为3的倍数时后手必胜呢?

   我们假设对手拿到n为3的倍数,且对手拿完之后剩余大于3(因为剩下1或2你就赢了,而对手不可能拿掉3的倍数),那么你一定可以通过拿掉1或者2使之变为3的倍数。那么对手一定会面临面前数字为3的窘境,这时他已经黔驴技穷了。

   综上,n为3的倍数时后手胜,否则先手胜。

转载于:https://www.cnblogs.com/zub23333/p/8503018.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值