
博弈论
文章平均质量分 60
FDOM
step by step
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(HDU - 4764) Stone(巴什博弈)
Tang and Jiang are good friends. To decide whose treat it is for dinner, they are playing a game. Specifically, Tang and Jiang will alternatively write numbers (integers) on a white board. Tang writes...原创 2018-04-19 17:36:41 · 258 阅读 · 0 评论 -
几种博弈论及分析
原博地址:https://blog.youkuaiyun.com/ac_gibson/article/details/41624623一. 巴什博奕(Bash Game): A和B一块报数,每人每次报最少1个,最多报4个,看谁先报到30。这应该是最古老的关于巴什博奕的游戏了吧。其实如果知道原理,这游戏一点运气成分都没有,只和先手后手有关,比如第一次报数,A报k个数,那么B报5-k个数,那么B报数之后问题就...转载 2018-04-19 17:57:46 · 2325 阅读 · 0 评论 -
威佐夫博弈详解
威佐夫博弈是博弈中的另一个经典模型。问题:首先有两堆石子,博弈双方每次可以取一堆石子中的任意个,不能不取,或者取两堆石子中的相同个。先取完者赢。分析:首先我们根据条件来分析博弈中的奇异局势 第一个(0 , 0),先手输,当游戏某一方面对( 0 , 0)时,他没有办法取了,那么肯定是先手在上一局取完了,那么输。第二个 ( 1 , 2 ),先手输,先手只有四种取法,1)取 1 中的一个,...转载 2018-04-19 19:54:17 · 3507 阅读 · 0 评论 -
取(2堆)石子游戏 HDU - 2177 (威佐夫博弈)
根据威佐夫博弈的性质:如果先手面对奇异局势,则必败。可采用适当方法把非奇异局势转变为奇异局势,则下一个必败。此题可先判断是否是奇异局势,即a和(b-a)*(sqrt(5.0)+1.0)/2.0是否相等(最好不要直接让(b-a)*1.618,会有精度损失),如果相等直接输出0,如果不等,则需把非奇异局势转化为奇异局势。有两种可能的途径,一种是从两堆里拿出相同的石子且剩下的两堆石子是奇异局势,另一种是...原创 2018-04-19 19:50:34 · 228 阅读 · 0 评论 -
尼姆博弈整理
尼姆博弈有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。这种情况最有意思,它与二进制有密切关系,我们用(a,b,c)表示某种 局势,首先(0,0,0)显然是奇异局势,无论谁面对奇异局势,都必然失败。第二种奇异局势是(0,n,n),只要与对手拿走一样多的物品,最后都将导致 (0,0,0)。仔细分析一下,(1,2,3)也是奇异局势,无论对手如何拿,接...原创 2018-04-19 20:29:00 · 275 阅读 · 0 评论 -
Being a Good Boy in Spring Festival HDU - 1850(尼姆博弈)
根据尼姆博弈性质,如果面对奇异局势,则先手必败,否则必胜判断是否是奇异局势,只需将所有的数异或起来,如果为0,则为奇异局势此题可以先判断是否为奇异局势,如果是奇异局势直接输出0。如果不是奇异局势,则需把非奇异局势转化为奇异局势,这样下一个人必败,自己必胜。假设一个非奇异局势(a,b,c),若想转化为奇异局势,只需让a=b^c或者b=a^c或者c=a^b,因为a^b^(a^b)=(a^a)^(b^b...原创 2018-04-19 21:20:06 · 181 阅读 · 0 评论 -
取石子游戏 HDU - 2516(斐波那契博弈)
斐波那契博弈有一堆物品,两人轮流取物品,先手最少取一个,至多无上限,但不能把物品取完,之后每次取的物品数不能超过上一次取的物品数的二倍且至少为一件,取走最后一件物品的人获胜。结论是:先手胜当且仅当n不是斐波那契数(n为物品总数)#include <iostream>using namespace std;int main(){ long long n; int a[1001...原创 2018-04-19 21:40:17 · 245 阅读 · 0 评论 -
Good Luck in CET-4 Everybody! HDU - 1847(巴什博弈)
#include <iostream>using namespace std;//博弈就是找每步都让对方必败的点//必败点0 3 6 9 12。。。,发现都是3的倍数,因为每两个必败点之间只有两个数,且这两个数都可以一步转化为必败点,所以n是三的倍数先手必败,否则必胜int main(){ int n; while(cin>>n) { if(...原创 2018-04-20 10:52:21 · 238 阅读 · 0 评论