威佐夫博弈

author author     2022-08-29     775

关键词:

同样威佐夫也有一个经典的例题:

1.有两堆数量分别为 n,m个石子的石子堆;

2.两个人轮流取石子,可以在一堆石子中取任意个,或者,在两堆石子中每堆石子取相同数目的石子;

 

输出:

如果先手赢,输出1,否则输出0。

 

题解:

首先,当n=0,m=0时,先手输。

n=1,m=1时,先手赢。

n=2,m=1时,先手输。

......

......

n=3,m=5时,先手输。

n=4,m=7时,先手输。

n=6,m=10时,先手输。

......

根据规律,发现他们的差值是递增的,为 0,1,2,3,4,5,6......n,

再找规律,你会发现:

第一个值=差值*1.618;

1.618=(sqrt(5)+1)/2;

 

1 int n,m,a,b;
2 
3 a=max(n,m);
4 b=min(n,m);
5 
6 if(a-b==(sqrt(5)+1)/2)
7     printf("0
");
8 else
9     printf("1
"); 

 

下面来看看威佐夫博弈常见的其他问题:

 

1)给你一个局面,让你求是先手输赢。

有了上面的分析,那么这个问题应该不难解决。首先求出差值,差值 * 1.618 == 最小值 的话后手赢,否则先手赢。(注意这里的1.618最好是用上面式子计算出来的,否则精

度要求高的题目会错)

 

2)给你一个局面,让你求先手输赢,假设先手赢的话输出他第一次的取法。

       首先讨论在两边同时取的情况,很明显两边同时取的话,不论怎样取他的差值是不会变的,那么我们可以根据差值计算出其中的小的值,然后加上差值就是大的一个值,当

然能取的条件是求出的最小的值不能大于其中小的一堆的石子数目。

      加入在一堆中取的话,可以取任意一堆,那么其差值也是不定的,但是我们可以枚举差值,差值范围是0 --- 大的石子数目,然后根据上面的理论判断满足条件的话就是一种合理的取法。

 

poj1067威佐夫博弈

链接:http://poj.org/problem?id=1067题意:威佐夫博弈(WythoffGame):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。题解:威佐夫博弈(WythoffGame):... 查看详情

51nod1185威佐夫游戏v2(威佐夫博弈)

1185 威佐夫游戏 V2 基准时间限制:1 秒空间限制:131072 KB分值: 0 难度:基础题 收藏 关注有2堆石子。AB两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不... 查看详情

85-取石子-威佐夫博弈

 http://poj.org/problem?id=1067                                        取石子游戏TimeLimit: 1000MS MemoryLimit: 10000KTotalSubmissions: 45409 Accepted: 15533Description有两 查看详情

威佐夫博弈

同样威佐夫也有一个经典的例题:1.有两堆数量分别为n,m个石子的石子堆;2.两个人轮流取石子,可以在一堆石子中取任意个,或者,在两堆石子中每堆石子取相同数目的石子; 输出:如果先手赢,输出1,否则输出0。 题... 查看详情

巴仕博弈+威佐夫博弈(代码片段)

既然会了尼姆博弈和SG函数,那么巴仕博弈和威佐夫博奕照理说应该是不在话下了巴什博奕:两个顶尖聪明的人在玩游戏,有n个石子,每人可以随便拿1到m个石子,不能拿的人为败者,问谁会胜利巴什博奕是博弈论问题中基础的... 查看详情

威佐夫博弈

有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。ab两堆a>=b奇异局势(a-b)*(1+sqrt(5))/2.0)==a黄金分割数(1+√5)/2=1.618...1#include<iostream>2#include<c... 查看详情

基础博弈——威佐夫与尼姆不得不说的那些事(代码片段)

STEP1:首先了解规则与概念  威佐夫博弈(Wythoff‘sgame):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。  尼姆博弈(NimmGame)... 查看详情

博弈论-威佐夫博弈

理论分析问题:首先有两堆石子,博弈双方每次可以取一堆石子中的任意个,不能不取,或者取两堆石子中的相同个。先取完者赢。分析:首先我们根据条件来分析博弈中的奇异局势第一个(0,0),先手输,当游戏某一方面对... 查看详情

hdu1527取石子游戏(威佐夫博弈)

TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):8509    AcceptedSubmission(s):4833ProblemDescription有两堆石子,数量任意,可以不 查看详情

博弈问题(巴什博弈威佐夫博弈尼姆博弈斐波拉契博弈)结论

巴什博弈有一堆n个石子从里面取,一次从里面取1~m个,最后取完者获胜。结论:如果n%(m+1)==0先手必败 n%(m+1)!=0为先手必胜。HDU4764#include<iostream>#include<algorithm>usingnamespacestd;intmain() intn,m; while(cin>>n>>m) 查看详情

威佐夫博弈(代码片段)

博弈规则:有两堆各若干个物品,两个人轮流从某一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。a堆和b堆的个数用(a,b)表示奇异局势:面对的时候,就是输家,比如(0... 查看详情

hdu-5973gameoftakingstones(威佐夫博弈高精度)(代码片段)

题目描述:Twopeoplefacetwopilesofstonesandmakeagame.Theytaketurnstotakestones.Asgamerules,therearetwodifferentmethodsoftakingstones:Oneschemeisthatyoucantakeanynumberofstonesinanyonepilewhilethealternative 查看详情

hdu1527取石子游戏威佐夫博弈

题目来源:HDU1527取石子游戏题意:中文思路:威佐夫博弈必败态为(a,b)ai+i=bi    ai=i*(1+sqrt(5.0)+1)/2  这题就求出i然后带人i和i+1推断是否成立下面转自网上某总结有公式ak=[k(1+√5)/2],bk=ak+k (k=0。1,... 查看详情

hdu5973gameofgetingstone(威佐夫博弈)(代码片段)

Twopeoplefacetwopilesofstonesandmakeagame.Theytaketurnstotakestones.Asgamerules,therearetwodifferentmethodsoftakingstones:Oneschemeisthatyoucantakeanynumberofstonesinanyonepilewhilethealternativeistotakethesameamountofstonesatthesametimeintwopiles.Intheend,thefirstpersontakingallthestonesiswinner.No... 查看详情

博弈论入门之威佐夫博弈(代码片段)

更好的阅读体验点这里威佐夫博弈威佐夫博弈是一类经典的博弈问题有两堆石子,两个顶尖聪明的人在玩游戏,每次每个人可以从任意一堆石子中取任意多的石子或者从两堆石子中取同样多的石子,不能取得人输,分析谁会获得... 查看详情

hdu1527取石子游戏(威佐夫博弈)(代码片段)

取石子游戏TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):8514    AcceptedSubmission(s):4837ProblemDescription有两堆石子,数量任 查看详情

hdu1527取石子游戏(威佐夫博弈)(代码片段)

取石子游戏TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):9725    AcceptedSubmission(s):5605ProblemDescription有两堆石子,数量任 查看详情

[shoi2002]取石子游戏-威佐夫博弈(代码片段)

...都采取最好的策略,问最后你是胜者还是败者。Solution威佐夫博弈模板题如果一个局面是N必败局面,那么我们称它为奇异局面结论是,任意一个局面 查看详情