洛谷p2252取石子游戏(威佐夫博弈)

自为 自为     2022-10-17     253

关键词:

题目背景

题目描述

有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。

输入输出格式

输入格式:

 

输入共一行。

第一行共两个数a, b,表示石子的初始情况。

 

输出格式:

 

输出共一行。

第一行为一个数字1、0或-1,如果最后你是胜利者则为1;若失败则为0;若结果无法确定则为-1。

 

输入输出样例

输入样例#1: 复制
8 4
输出样例#1: 复制
1

说明

[数据范围]

50%的数据,a, b <= 1000

100%的数据,a, b <= 1 000 000 000

 

威佐夫博弈的裸题

不过不是那么好AC,数据太刁钻了

威佐夫博弈的必败条件

$abs(a,b)*(1+sqrt{5})/2 = min(a,b)$

 

 

#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#include<cmath>
#define int long long 
using namespace std;
const int MAXN=1e6+10,INF=1e9+10;
main()
{
    int a,b;
    scanf("%lld%lld",&a,&b);
    if(a>b) swap(a,b);
    int temp=abs(a-b);
    int ans=temp*(1.0+sqrt(5.0))/2.0;
    if(ans==a) printf("0");
    else        printf("1");
    return 0;
}

 

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

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

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有两堆石子,数量任 查看详情

85-取石子-威佐夫博弈

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

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

Description有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现... 查看详情

poj1067取石子游戏威佐夫博弈博弈论

http://poj.org/problem?id=1067有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石... 查看详情

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,... 查看详情

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

...bsp;KB分值: 0 难度:基础题 收藏 关注有2堆石子。AB两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设AB都非常聪明,拿石子的过程中不... 查看详情

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

HDU2177取(2堆)石子游戏ProblemDescription有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石... 查看详情

题解报告:hdu1527取石子游戏(威佐夫博弈)(代码片段)

...http://acm.hdu.edu.cn/showproblem.php?pid=1527ProblemDescription有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走... 查看详情

51nod1072威佐夫游戏(简单博弈)

...www.51nod.com/onlineJudge/questionCode.html#!problemId=1072题意:有2堆石子。AB两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设AB都非常聪明,拿石子的过程中不... 查看详情

博弈论-威佐夫博弈

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

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

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

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

...在话下了巴什博奕:两个顶尖聪明的人在玩游戏,有n个石子,每人可以随便拿1到m个石子,不能拿的人为败者,问谁会胜利巴什博奕是博弈论问题中基础的问题它是最简单的一种情形对应一种状态的博弈博弈分析如果有m+1个石子... 查看详情

取石子游戏(洛谷_2252)

我随机跳题,跳到了这题,乍一看,不就博弈论吗,题目明明白白的告诉了我们。诶.........丧啊。。。不会。。。。。。。万般无奈,看了一下题解,是一个叫做威佐夫博弈的东西。然后百度一下,盯着半天,终于会了,你们也... 查看详情

威佐夫博弈

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

威佐夫博弈入门小结

...夫博弈的题型是:一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。这里提到了一个概念:奇异局势。那些证明什么的我也不会,网上也一堆。大概就是设... 查看详情

博弈论威佐夫博弈

威佐夫博弈  威佐夫博弈:有两堆石子,每次一个人可以两堆同时取相同数量的石子,也可以只取其中一堆的石子,最后谁取完谁获胜,请问先手还是后手胜?   对于学过一些博弈论基础的来说,我们需要找到... 查看详情