
博弈
Eirlys_North
这个作者很懒,什么都没留下…
展开
-
巴什博弈 (例:HDU1846&HDU1847&HDU2188&HDU2149)
巴什博弈: 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。换句话说,也就是面对这个局面的先手必输(谁面对这个局面谁一定输)=。= 因此我们发现了如何取胜的法则: 如果n=(m+1)r+s,(r为任意自然数,s≤m)原创 2016-11-07 09:33:28 · 643 阅读 · 0 评论 -
bzoj 1115 阶梯博弈
题意:n堆石子,每次可以从任意堆中拿走任意个,初始和每次操作后都要保证a1 阶梯博弈...又到了涨姿势的时候了 阶梯博弈: 博弈在一列阶梯上进行,每个阶梯上放着自然数个点,两个人进行阶梯博弈,每一步则是将一个集体上的若干个点(i >=1 )移到前面去,最后没有点可以移动的人输 我们可以只考虑在奇数堆上的操作,这样整个游戏就可以转化成NIM的模型 玩家将奇数堆中的石子推到偶原创 2017-02-18 21:30:38 · 452 阅读 · 0 评论 -
bzoj 1022 博弈 Anti-Nim(模板)
具体证明请见贾志豪大犇的2009论文 orz,这里直接贴结论: 对于Anti-SG 的: 1、如果所有子游戏的SG异或和=0且所有子游戏的SG 2、如果所有子游戏的SG异或和1则先手必胜 两种情况都不满足的则先手必输 代码:var t,n,cnt,tot :longint; i :longint; a,s原创 2016-12-16 21:33:28 · 418 阅读 · 0 评论 -
bzoj 1188 博弈sg函数
蛮好的一道博弈题,加深对sg函数理解必备题目(╯‵□′)╯︵┻━┻ 关键在于局面的定义和对子游戏的把握 一般情况下,我们直接定义石子数(每一堆)为一个局面,但是在这道题里会发现这么定义子游戏之间会产生干扰的,显然是矛盾不可行的 所以这道题,把每一个石子看做一个单独的游戏 定义局面:一个石子在i位置处 即sg[i]表示在i位置的每一个石子的sg值(即使在同一个位置,每个石子之间都是相互独原创 2017-01-05 11:54:24 · 419 阅读 · 0 评论 -
HDU1849 SG函数
然而这题水的我都不想说啥=。= 因为可以向左任意挪,所以直接sg[i]=i; var n,x,ans :longint; i :longint; sg :array[0..1010] of longint; begin read(n); for i:=1 to 10原创 2016-11-07 20:16:28 · 403 阅读 · 0 评论 -
求SG模板(附:HDU1848 &HDU1536)【pascal】
关于SG函数的理论知识以及理解,请见这里,目前我没有看见比这个说得更棒的=w= 这里只是用来贴模板的 首先定义mex(minimal excludant)运算, 这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。 例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。 对于一个给定的有向无环图,定义关于图的每个顶点的Sprague-Grundy函数g如下原创 2016-11-07 19:49:11 · 522 阅读 · 0 评论 -
博弈问题及SG函数(怒赞,耐心地仔细看一定能看懂)
博弈问题 若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多。(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要看“博弈论”的时候。) Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论,由这个游戏开始了解博弈论恐怕是最合适不过了。 Nim游戏是组合游戏(Comb转载 2016-11-07 10:50:40 · 669 阅读 · 0 评论 -
尼姆博弈 (附:HDU1850)
尼姆博弈: 有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 这种情况与二进制有着很大的关系, 我们用(a,b,c)来表示某种局势, 那么(0,0,0)必然为奇异局势, (0,n,n)也是种奇异局势。 因为如果对手在其中一堆取m个石子(m 直接说结论吧: 对于任意的奇异局势(a,b,c),都有a^b^c=0。(^为异或运算)。原创 2016-11-07 10:02:04 · 618 阅读 · 0 评论 -
威佐夫博弈(附POJ1067)
威佐夫博弈: 有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 我们用(ak,bk)(ak局势。 如果甲面对局势(0,0),说明甲输了,我们把这种情况叫做奇异局势。 现在的问题我给你一个局势(a,b),我们怎么判断它是不是奇异局势呢? 判断公式为: ak=[k(1+√5)/2](向下取整), bk=ak+k(k=0,1原创 2016-11-07 09:36:18 · 747 阅读 · 0 评论 -
bzoj 2275 Fibonacci博弈 齐肯多夫定理
题意:两个人进行Fibonacci博弈,若先手要有必胜策略,求他第一次至少要取多少个 由Fibonacci博弈可知,如果当前石子数是fibonacci数,则先手必败,所以此时当前的先手必须全部取走 齐肯多夫(zeckendorf)定理:任何一正整数都能拆成一堆互不相同的正整数的和,且一定存在一种取法取到不超过它的最大Fibonacci数 var n,t :int64; f原创 2017-05-02 07:34:38 · 1555 阅读 · 0 评论