博弈
文章平均质量分 70
cillyb
这个作者很懒,什么都没留下…
展开
-
尼姆博弈
转载自:点击打开链接题型尼姆博弈模型,大致上是这样的:有3堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取1个,多者不限,最后取光者得胜。 分析1、首先自己想一下,就会发现只要最后剩两堆物品一样多(不为零),第三堆为零,那面对这种局势的一方就必败那我们用(a,b,c)表示某种局势,首先(0,0,0)显然是必败态,无论谁面对(0,0,0转载 2016-10-14 21:32:29 · 1220 阅读 · 0 评论 -
HDU 1525 Euclid's Game(博弈)
题意:题目给出了两个正数a, b,每次操作可以把大的数减掉小的数的整数倍。一个数变为0 的时候结束。谁先把其中一个数减为0的获胜。问谁可以赢。Stan是先手。思路:假设a>=b, 如果a%b == 0, 那么肯定是先手胜。(点击打开链接)如果a>=2*b. 那么 那个人肯定知道a%b,b是必胜态还是必败态。如果是必败态,先手将a,b变成a%b,b,那么先手肯定赢。原创 2018-05-03 20:48:13 · 412 阅读 · 0 评论 -
HDU 2516 取石子游戏(斐波那契博弈)
题意:1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win".思路:如果不知道斐波那契博弈的话,这题也可以一个个手算下小数据,就会发现必败态都是当石子数为斐波那契数。关于斐波那契博弈的证明:点击打开链接代码:#inclu原创 2018-04-25 23:09:29 · 382 阅读 · 0 评论 -
51nod 1068 Bash游戏 V3(找规律)
有一堆石子共有N个。A B两个人轮流拿,A先拿。每次拿的数量只能是2的正整数次幂,比如(1,2,4,8,16....),拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N,问最后谁能赢得比赛。例如N = 3。A只能拿1颗或2颗,所以B可以拿到最后1颗石子。(输入的N可能为大数)Input第1行:一个数T,表示后面用作输入测试的原创 2017-07-10 23:59:58 · 380 阅读 · 0 评论 -
hdoj 1729 Stone Game(sg函数)
题目地址:点击打开链接题意:现在有n个箱子,每个箱子有一个容积si和一个当前箱子内的石子数ci,两个人轮流往这n个箱子里面放石子,每次放的个数为1-ci*ci。例如箱子里有3颗石子,那么下一个人就可以放1~9颗石子最后不能放入石子的人输。一开始直接递推sg函数....数据量比较大 必然TLE...思路:我们知道s肯定是必败态,此时已经没有可以原创 2016-12-02 11:41:32 · 610 阅读 · 0 评论 -
hdoj 1851 A Simple Game(组合博弈, sg函数)
和hdoj1848基本一样。就是一个组合博弈,求出每一个堆的sg函数,异或一下即可。代码:原创 2016-12-01 20:16:24 · 448 阅读 · 0 评论 -
hdoj 1848 Fibonacci again and again(组合博弈, sg函数)
题目地址:点击打开链接sg函数可以看上一篇博客组合博弈,就是把简单的游戏组合起来,比如3堆的可以看成3个一堆的游戏。定理:假设游戏 Gi的SG函数是gi, i=1,…,n, 则G = G1 + … + Gn 的 SG函数是g(x1,…,xn) = g1(x1)⊕…⊕gn(xn).其中那个符合就是异或^看看是不是和Nim游戏的结论差不多?如果想理解原理链接在此原创 2016-12-01 19:53:29 · 475 阅读 · 0 评论 -
hdoj 1847 Good Luck in CET-4 Everybody!(博弈, sg函数)
讲博弈入门和sg函数入门比较好的一个博客:点击打开链接题目地址:点击打开链接这题既可以用sg函数做,也可以用pn的定义(必败态和必胜态)来做。sg函数代码:#include#include#includeusing namespace std;const int maxn = 1e3+5;int p[11] = {1, 2, 4, 8, 1原创 2016-12-01 19:17:31 · 622 阅读 · 0 评论 -
hdoj 1517 A Multiplication Game(博弈)
看了第二个解释,感觉对解决博弈问题有了更好的理解。 讲的很好!!转自:点击打开链接题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1517 题意:2 个人玩游戏,给定一个数n,从 1 开始,轮流对数进行累乘一个数(2~9中取), 直到第一次等于或超过n为赢.思路原创 2016-11-30 20:19:35 · 384 阅读 · 0 评论 -
巴什博奕
摘自:点击打开链接一. 巴什博奕(Bash Game): A和B一块报数,每人每次报最少1个,最多报4个,看谁先报到30。这应该是最古老的关于巴什博奕的游戏了吧。其实如果知道原理,这游戏一点运气成分都没有,只和先手后手有关,比如第一次报数,A报k个数,那么B报5-k个数,那么B报数之后问题就变为,A和B一块报数,看谁先报到25了,进而变为20,15,10,5,当到5转载 2016-10-15 17:30:23 · 591 阅读 · 0 评论 -
威佐夫博弈
摘自:点击打开链接威佐夫博奕(Wythoff Game)定义:有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。思考:把两堆石子的集合写为(a,b)不失一般性令我们只考虑a我们依次考虑(0,0)-(0,*)……(n,n)-(n,*)的情况。把所有状态看成一个二维数组,我们只需考虑上三角的转载 2016-10-15 17:22:17 · 476 阅读 · 0 评论 -
HDU 1847 Good Luck in CET-4 Everybody!(巴什博弈)
题意:1、 总共n张牌; 2、 双方轮流抓牌; 3、 每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…) 4、 抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;思路:很久以前做过这题,可以拿sg函数做,也可以用pn做,现在才知道也是个巴什博弈摘自:点击打开链接巴什博弈(定理献上): 只有一转载 2018-05-03 21:09:26 · 556 阅读 · 0 评论