Vijos1655 - 萌萌的糖果博弈
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 - 萌萌的糖果博弈的更多相关文章
- vijos 1655 萌萌的糖果博弈 博弈
背景 用糖果来引诱小朋友学习是最常用的手法,绵羊爸爸就是用糖果来引诱萌萌学习博弈的. 描述 他把糖果分成了两堆,一堆有A粒,另一堆有B粒.他让萌萌和他一起按照下面的规则取糖果:每次可以任意拿走其中一堆 ...
- 靠!老师居然叫我们去写博弈论!!!结果写了一个晚上的博弈论,简直要死QAQ。。。发发博客休息一下。。。TAT。。。
萌萌的糖果博弈 题目描述: 用糖果来引诱小朋友学习是最常用的手法,绵羊爸爸就是用糖果来引诱萌萌学习博弈的.他把糖果分成了两堆,一堆有A粒,另一堆有B粒.他让萌萌和他一起按照下面的规则取糖果:每次可以任 ...
- HDU 1907 Nim博弈变形
1.HDU 1907 2.题意:n堆糖,两人轮流,每次从任意一堆中至少取一个,最后取光者输. 3.总结:有点变形的Nim,还是不太明白,盗用一下学长的分析吧 传送门 分析:经典的Nim博弈的一点变形. ...
- 糖果大战 hdu1204
糖果大战 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu 1907(Nim博弈)
John Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submis ...
- hdu1907John(反nim博弈)
John Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submis ...
- BZOJ 5046 分糖果游戏
网页崩溃了 心态也崩溃了 MD劳资写了那么多 题意: 有a,b两个人分糖,每个人都有一个能量值.每个人每一轮可以选择进行两种操作: 1.取走最左边的糖果,补充相应的能量值并获取相应的美味度. 2.跳过 ...
- 原生js可爱糖果数字时间特效
效果展示:http://hovertree.com/texiao/js/35/ 数字采用漂亮的糖果皮肤设计 效果图: 代码如下: <!DOCTYPE html> <html> ...
- hdu----(1849)Rabbit and Grass(简单的尼姆博弈)
Rabbit and Grass Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
随机推荐
- Elasticsearch (2) - 映射
常用映射类型 核心的字段类型如下: String 字符串包括text和keyword两种类型: 1.text analyzer 通过analyzer属性指定分词器. 下边指定name的字段类型为tex ...
- viewport实现html页面动态缩放/meta viewport/viewport
页面默认缩放比例为1,最小宽度为375px,在小于375px出现水平滚动条的时候重新计算显示比例缩小界面, <!DOCTYPE html> <html lang="en&q ...
- gp服务输出的结果文件输出到绝对路径
gp服务跟本地用arcmap执行gp有个不同,就是输出的文件一般只能输出到arcgis server默认的output目录里面(arcgis server有此限制,无论怎么配还是写到output目录里 ...
- java8的lambda表达式,将List<DTO> 转为 List<DO>
将List<PhoneDTO>转为List<PhoneDO>,通过java8的lambda表达式来操作,比传统的for循环精简很多: /** * List<PhoneDT ...
- PMP项目管理学习笔记(4)——项目整合管理
六个整合管理过程. 1.制定项目章程 一个新项目要完成的第一件事,就是项目章程的制定.这是授权你开展工作的文档.不过并不总是需要你介入,通常情况下会由赞助人交给你.如果没有项目章程,你就没有权利告诉你 ...
- centos7环境搭建Eureka-Server注册中心集群
目的:测试和线上使用这套独立的Eureka-Server注册中心集群,目前3台虚拟机集群,后续可直接修改配置文件进行新增或减少集群机器. 系统环境: Centos7x64 java8+(JDK1.8+ ...
- 基于SAE的Python+Django部署
本文主要参考:http://www.cnblogs.com/qtsharp/archive/2012/01/12/2320774.html,另外包括自己的实际操作. 一.申请SAE帐号以及创建应用ya ...
- 用python+pygame写贪吃蛇小游戏
因为python语法简单好上手,前两天在想能不能用python写个小游戏出来,就上网搜了一下发现了pygame这个写2D游戏的库.了解了两天再参考了一些资料就开始写贪吃蛇这个小游戏. 毕竟最开始的练手 ...
- 一条update语句优化小记
遇到性能问题的sql如下: sql1: UPDATE amlclientlevel a SET a.client_value = (SELECT l.client_value ...
- PHP23 AJAX分页
模型代码设计 以留言信息管理为例. 获取根据条件查询记录总数和分页数据. <?php namespace application\admin\models; use core\mybase\Mo ...