博弈论一 [ 巴什博奕 ]

首先,这基本是关于ACM博弈论得一系列文章吧。

今天先讲一个最简单得博弈——巴什博奕。

其游戏规则是这样的:

有一堆n个石子,两个足够聪明的人玩,每个人可以去1~m个石子,取到最后一个石子为胜。

比如 n=7 ,m =3

那么先手必胜,过程大概如下,

先手取3,后首取i个,先手则拿4-i个,这样先手就拿到最后的石子了。(3+i+4-i=7,所以4-i就包含最后一个)。

那么其实想法很简单。

当n%(m+1)==0,先手必输,否则先手必胜。

为什么?

当n%(m+1)==0,时,先手取i个,后手去m+1-i(这样是合法得,因为先手不能拿完,但是至少拿1),这样一个回合就可以凑出m+1个,而n%(m+1)==0,所以n/(m+1)回合,后手就能取到最后一个。

当n%(m+1)=k,k>0,则先手去k个,此时石子回到n%(m+1)==0时,先手和后手于上一种情况则交换拿的顺序(即在n%(m+1)==0情况下,“后手”先拿),先手必胜。

那么问题就来了。

HDU1846(巴什博奕裸题)

http://acm.hdu.edu.cn/showproblem.php?pid=1846

题解:http://blog.csdn.net/dengyaolongacmblog/article/details/40452505

HDU2188(还是裸题)

http://acm.hdu.edu.cn/showproblem.php?pid=2188

题解:http://blog.csdn.net/dengyaolongacmblog/article/details/40452537

HDU2897(巴什博奕变形)

http://acm.hdu.edu.cn/showproblem.php?pid=2897

题解:http://blog.csdn.net/dengyaolongacmblog/article/details/40452561

POJ2368(巴什博奕变形)

http://poj.org/problem?id=2368

题解:http://blog.csdn.net/dengyaolongacmblog/article/details/40453285

时间: 2024-11-07 21:30:57

博弈论一 [ 巴什博奕 ]的相关文章

博弈论之巴什博奕

巴什博弈(定理): 只有一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,最多取m个.最后取光者得胜. 如果n=m+1,一次最多只能取m个,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,则后者取胜. 取胜的法则 :如果 n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿k(k≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的局势,那么先取者必然获胜. 即n%(m+1) != 0总之,要保持留给对手(m

hdu 2149Public Sale(博弈论 巴什博奕)

Public Sale Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5919    Accepted Submission(s): 3472 Problem Description 虽然不想,但是现实总归是现实,Lele始终没有逃过退学的命运,因为他没有拿到奖学金.现在等待他的,就是像FarmJohn一样的农田生涯. 要种田得有田才行

hdu 2188 悼念512汶川大地震遇难同胞——选拔志愿者 (博弈论,巴什博奕)

悼念512汶川大地震遇难同胞——选拔志愿者 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6982    Accepted Submission(s): 4421 Problem Description 对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每个省市都派出了大量的救援人员,这其中包括抢险救灾的武警部队,治疗和防疫的医护人

巴什博奕

巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜.因此我们发现了如何取胜的法则:如果n=(m+1)*r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜.总之,要保

http://codeforces.com/gym/100694/problem/M The Fifth Season (巴什博奕)

题目链接 一直觉得巴什博奕是最简单的博弈遇到肯定没问题,结果被虐惨了,看完标程错了10多遍都没反应过来,当然标程题解和代码的意思也写反了,但是还是想对自己说一句mdzz,傻啊!!!这道题很不错,我觉得很有必要拿来写一篇博客. 题意:n个石子,两个人轮流取,q次询问,每次询问给定k和l,取的石子数目在k到l之间,假设两个人的取法都为最佳即向着自己赢的目标取,问一共能取多少次. 题解:巴什博奕,接下来的叙述中用a和b代替k和l.根据巴什博奕,首先ans=n%(a+b)*2是肯定的,问题就在于余数p.

HDU2149 Public Sale(巴什博奕)

才直到这种问题叫巴什博奕 换是老问题 多了一个第一次报价的输出取值 我分了两种情况 1.N>=M时 ,应该是输出M,M+1,...N 2.N<M时,输出s,s+N+1,...<=M (s来源于公式M%(N+1) == s) #include<cstdio> int main() { int M,N; while(scanf("%d%d",&M,&N)!=EOF){ if(M%(N+1)==0) printf("none\n&quo

杭电2147(巴什博奕)

kiki's game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 40000/1000 K (Java/Others)Total Submission(s): 6504    Accepted Submission(s): 3869 Problem Description Recently kiki has nothing to do. While she is bored, an idea appears in his mi

杭电1846(巴什博奕)

Brave Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6433    Accepted Submission(s): 4293 Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分

博弈:巴什博奕(Bash Game)威佐夫博奕(Wythoff Game)尼姆博奕(Nimm Game)

巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜 对于巴什博弈可以考虑:n=(m+1)*k+s,即如果n%(m+1)!=0则先取者只需取走s物品即可保证获胜. HDU 1846:裸的. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<limits.h> t