
博弈论
博弈论知识,以及相关题目
CaptainHarryChen
I solemnly swear that I am up to no good.
展开
-
博弈论——SG定理(函数)
博弈论——SG定理原创 2017-02-07 20:23:52 · 532 阅读 · 0 评论 -
【AtCoder2305】Decrementing(博弈)
题意黑板上有n个数,它们的最大公约数为1.于是A和B决定玩一个游戏,两个人轮流进行操作,A先手。从黑板上的数选择一个不小于2的数,把这个数减去1,然后对于这n个数,除以他们的最大公约数.当一个人无法操作时便输了。求先手是否必胜。题解定义状态1:有奇数个偶数,奇数至少一个定义状态2:有偶数个偶数,且奇数个数≥2定义状态3:有偶数个偶数,奇数一个所有数都为1,为必败态,属于状态2状态...原创 2018-09-25 21:36:19 · 361 阅读 · 0 评论 -
【AtCoder2376】Black and White Tree(博弈)
题意A和B轮流给树上的结点染色,A每次选择没染过的点染成白色,B每次选择没染过的点染成黑色,最后若所有白色都与黑色相邻,则B胜,否则A胜。双方以最优策略,求A胜还是B胜。题解A首先选择叶子结点的父亲u,则B只能选择叶子结点(否则叶子节点染白后,永远不可能与黑色相邻),所以,如果存在u有两个以上叶子结点,则A胜;然后删去u,则u的父亲v,如果v没有了子节点,v就成为新的叶子结点,A可继续先前...原创 2018-09-30 21:46:22 · 300 阅读 · 0 评论 -
【HDU1527】取石子游戏(威佐夫博弈)
题目:有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 威佐夫博弈: 威佐夫博弈代码:#include#include原创 2017-02-10 19:36:06 · 413 阅读 · 0 评论 -
斐波那契博弈
一堆石子有n颗。第一个人第一次至少取1颗,最多取n-1颗。至此后,每个人取的石子数不能超过对手前一次所取的石子数的2倍。 先手胜当且仅当n不是Fibonacci数。换句话说,必败态构成Fibonacci数列。原创 2017-02-13 21:00:49 · 444 阅读 · 0 评论 -
阶梯博弈
游戏开始时有许多硬币任意分布在楼梯上,共n阶楼梯从地面由下向上编号为0到n。游戏者在每次操作时可以将楼梯j(1<=j<=n)上的任意多但至少一个硬币移动到楼梯j-1上。游戏者轮流操作,将最后一枚硬币移至地上的人获胜。原创 2017-02-13 20:35:04 · 380 阅读 · 0 评论 -
博弈论
博弈论:1.NP状态 N(next):此状态的先手必胜。 P(perv):此状态的后手必胜。 2.NP转移 终止状态为P; 能一步到达任何一个P的状态为N; 不能一步到达任何P的状态为N;原创 2017-02-10 22:06:25 · 720 阅读 · 0 评论 -
【HDU1517】A Multiplication Game(博弈论)
题目大意:初始数为1,stan先手,每次将数乘以2~9,先将数≥n者胜。题解:倒推,n为P状态,n-1~n/9为N状态,n/9-1~n/9/2为P状态……一直不停除以9,除以2,状态交替,要特殊处理当前数是2或9的倍数的情况,除以2或9会有差异。原创 2017-02-10 22:02:06 · 306 阅读 · 1 评论 -
【HDU1850】Being a Good Boy in Spring Festival (SG定理)
题目大意:M堆牌,每堆有Ni个,两人轮流取,每次取一堆的任意数量,取完者胜。问先手想赢,第一步有几种方案?题解:SG定理的巧妙应用 因为每次可以取任意数量,所以sg[i]==i。整个游戏的sg值s=N1^N2^…^Nm; 枚举I到m,设x=s^Ni,(此时x为除了第I堆,其它堆游戏的和的sg值),只要第I堆取了x个,x^其它游戏的和(x)==0,是P状态,所以先手第一步在第I堆取x个就是一种方案原创 2017-02-10 19:21:57 · 341 阅读 · 0 评论 -
【HDU1848】Fibonacci again and again (博弈论)
题目大意:有3堆石头,两个人轮流取,每次取的数量只能是Fibonacci中的数,取完所有的人获胜,求先手胜负情况。原创 2017-02-10 18:47:11 · 308 阅读 · 0 评论 -
【AtCoder2307】Tree Game(博弈)
题意有一棵树,每个结点上有A[i]个石子,A开始把一个棋子放在任意一个结点上,然后由A开始,A,B轮流操作将当前棋子的结点石子数减1将棋子移动到相邻的结点上不能操作者输求A开始把棋子放在哪儿保证能赢。题解性质:棋子不会往比自己石子多的地方走(如果这样走,对方可以再走回来,自己就少了一颗棋子,对方又比自己多,打消耗战打不赢的。。。)然后就可以直接模拟计算NP状态枚举一个点作为起点,...原创 2018-09-25 22:01:24 · 333 阅读 · 0 评论