首先还是得学姿势吧
基础博弈的小结:http://blog.csdn.net/acm_cxlove/article/details/7854530
经典翻硬币游戏小结:http://blog.csdn.net/acm_cxlove/article/details/7854534
经典的删边游戏小结:http://blog.csdn.net/acm_cxlove/article/details/7854532
1、巴什博弈:只有一堆石子,n个,每人每次能取1~m个,取完者胜。
这个模型的解决办法是看n%(m+1)是否为0,为0的话先手必败,否则必胜。
2、威佐夫博弈:有两堆石子,每人每次可从一堆中拿若干个石子(>=1)或者从两堆中拿相同多的若干个石子(>=1),无法拿者输。
证明过程略去(反正也看不太懂),只有面对奇异局面的时候,先手才必败。设(ai,bi)是奇异局面,则有ai =[i(1+√5)/2],bi= ak + i (i=0,1,2,…,n 方括号表示取整函数)
3、尼姆游戏:有三堆石子,每人每次从某一堆中选取若干个石子,不能不取,无法拿者输。
将三堆石子数异或起来,是0则先手输,否则先手赢。可以推广到多堆石子的情况。
接下来是一些经典游戏。。。
1、普通nim游戏
没啥好说的,就是注意一下SG函数的使用条件:
1.
2.
3.
4.
5.
定义取走最后一个石子的人输,就变成了anti-nim。于是SJ定理登场,即先手必胜只有两种情况:
1.如果每一个小游戏都只剩下一个石子了,SG为0。
2.至少一堆石子>1,且SG不为0.
3、every-SG游戏传说中的多线程博弈。
形象的说就是红队和蓝队每个队n个人,然后进行n个博弈,最后结束的一场博弈的胜者胜利。
显然,每个博弈的胜者都想让时间坚持得更久,每个败者都想让这场博弈早点结束。
不难列出每个点到终止的步数的DP方程。
如果v是先手必胜,则f[v]=max(f[u])+1,其中u为v的后继且u为先手必败。
否则f[v]=min(f[u])+1,u为v后继。
博弈题每次在赛场上没做出来都觉得很遗憾 所以特别列个list出来刷 主要是一些偏重于分析过程的题
HDU3389 Game
题目大意:1-N带编号的盒子,当编号满足A>B && A非空 && (A + B) % 3 == 0 && (A + B) % 2 == 1则可以从A中取任意卡片到B中,谁不能取了谁就输了。
分析:找规律会发现可以相互给卡片的盒子之间是有联系的。然后1 3 4三个盒子有牌成为了终止状态。具体分析可见:http://blog.csdn.net/qiqijianglu/article/details/7888110