hdu1525 Euclid's Game , 基础博弈

http://acm.hdu.edu.cn/showproblem.php?pid=1525

题意:

两人博弈,给出两个数a和b,

较大数减去较小数的任意倍数,结果不能小于0,将两个数任意一个数减到0的为胜者。

题解:

假设a大于b

a == b.  N态

a%b == 0. N态

a >= 2*b,先手能决定谁取(b,a%b),并且知道(b,a%b)是P态还是N态.    N态

b<a<2*b, 只能 -->(b,a-b) , 然后再进行前面的判断.

#include<cstdio>
#include<algorithm>
using namespace std;

int main() {
    int a, b;
    while(scanf("%d%d", &a, &b))
    {
        if(a==0&&b==0) break;
        if(a<b)  swap(a,b);
        bool Stan = true;
        while(1)
        {

            if(b==0 ||a%b==0||a/b>=2) break;
            int t = a;
            a = b;
            b = t - a;
            Stan = !Stan;
        }
        if(Stan) printf("Stan wins\n");
        else printf("Ollie wins\n");
    }
    return 0;
}

hdu1525 Euclid's Game , 基础博弈,布布扣,bubuko.com

hdu1525 Euclid's Game , 基础博弈

时间: 2024-10-12 20:16:54

hdu1525 Euclid's Game , 基础博弈的相关文章

HDU1525(Euclid&#39;s Game)规律博弈

Problem Description Two players, Stan and Ollie, play, starting with two natural numbers. Stan, the first player, subtracts any positive multiple of the lesser of the two numbers from the greater of the two numbers, provided that the resulting number

hdu1525 Euclid&amp;#39;s Game , 基础博弈

http://acm.hdu.edu.cn/showproblem.php?pid=1525 题意: 两人博弈,给出两个数a和b, 较大数减去较小数的随意倍数.结果不能小于0,将两个数随意一个数减到0的为胜者. 题解: 如果a大于b a == b.  N态 a%b == 0. N态 a >= 2*b,先手能决定谁取(b,a%b),而且知道(b,a%b)是P态还是N态.    N态 b<a<2*b, 仅仅能 -->(b,a-b) , 然后再进行前面的推断. #include<c

hdu------(1525)Euclid&#39;s Game(博弈决策树)

Euclid's Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2074    Accepted Submission(s): 924 Problem Description Two players, Stan and Ollie, play, starting with two natural numbers. Stan,

小结 - 基础博弈

小结一下基础博弈,因为暂时对博弈的理解还不是很深,只能说一下我对这段时间对博弈的认识. 博弈论的简介 博弈论是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论.博弈论是研究互动决策的理论.博弈可以分析自己与对手的利弊关系,从而确立自己在博弈中的优势,因此有不少博弈理论,可以帮助对弈者分析局势,从而采取相应策略,最终达到取胜的目的.博弈的类型分为:合作博弈.非合作博弈.完全信息博弈.非完全信息博弈.静态博弈.动态博弈,等等. 基础概念 必胜态:通过某一步可以转移到必

hdu 2147 kiki&#39;s game, 入门基础博弈

博弈的一些概念: 必败点(P点) : 前一个选手(Previous player)将取胜的位置称为必败点. 必胜点(N点) : 下一个选手(Next player)将取胜的位置称为必胜点. 必败(必胜)点属性 (1) 所有终结点是必败点(P点): (2) 从任何必胜点(N点)操作,至少有一种方法可以进入必败点(P点): (3)无论如何操作, 从必败点(P点)都只能进入必胜点(N点). hdu 2147 kiki's game 题意: 在一个m*n的棋盘内,从(1,m)点出发,每次可以进行的移动是

UVA 10368 - Euclid&#39;s Game(数论+博弈)

10368 - Euclid's Game 题目链接 题意:Stan和Ollie玩游戏,有两个数字a,b,每次可以选择较小数字的倍数,把另一个数字-去这个数,要保证>= 0,最后谁那步能得出0谁就赢了,问谁会赢. 思路:其实这个相减的过程就是一个辗转相除的过程,考虑每一次辗转相除,如果只有1倍的数可以减,那么必须到下一步,如果有多步,先手的就有机会选择是自己到下一步或者让对方到下一步,这样先手的就必胜了,于是利用辗转相除,求出谁能先掌控局面,就是谁赢了. 代码: #include <stdio

POJ 2348 Euclid&#39;s Game(博弈)题解

题意:有a,b两个数字,两人轮流操作,每次可以选择两个之中较小的数字,然后另一个数字减去选择数字的任意倍数(不能减到负数),直到其中一个为0,不能操作为败 思路:这题用博弈NP思想,必败点和必胜点之间的转化. 我们假设当前状态为(x,y)其中x>=y,那么必有以下任一状态: 1. x < 2 * y:那么这是只能执行一个操作x - y,如果这个操作之后变成必败态,那么当前为必胜态:反之亦然. 2. x >= 2 * y:显然此时有多种选择,假设x = k * y,如果x - (k - 1

HDU_1907_基础博弈nim游戏

John Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 4440    Accepted Submission(s): 2541 Problem Description Little John is playing very funny game with his younger brother. There is one big bo

基础博弈——威佐夫与尼姆不得不说的那些事

STEP1:首先了解规则与概念 威佐夫博弈(Wythoff's game):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 尼姆博弈(Nimm Game):有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 要注意,在威佐夫博弈中,玩家可以选择操作两堆物品,而在尼姆博弈中,只能对任意一堆物品进行操作. STEP2:了解奇异局势 Q:什么是局势与奇异局势? A:局势就是指