Beans Game


Time Limit: 5 Seconds Memory Limit: 32768 KB

There are three piles of beans. TT and DD pick any number of beans from any pile or the same number from any two piles by turns. Who get the last bean will win. TT and DD are very clever.

Input

Each test case contains of a single line containing 3 integers a b c, indicating the numbers of beans of these piles. It is assumed that 0 <= a,b,c <= 300 and a + b + c > 0.

Output

For each test case, output 1 if TT will win, ouput 0 if DD will win.

Sample Input

1 0 0
1 1 1
2 3 6

Sample Output

1
0
0 转自https://www.cnblogs.com/yuyixingkong/p/3939993.html 博弈题;相对于取石子游戏那题多了一堆;(但,有一点不一样,就是范围!那么就简单多了)
题目大意:有三堆豆子a,b,c(a+b+c<=300)。TT和DD轮流从其中一堆拿走任意个豆子或从其中的两种拿走同样多的豆子,最后一个拿完的获胜。
算法分析:

典型的威佐夫博弈问题是两堆,而此题为三堆。

原本以为这题是要找规律,但是找了一个小时没找到。百度解题报告,发现原来只要逆向推即可。采用递推比较快。

p[i][j][k] = 0表示状态为i,j,k时是必败态,p[i][j][k] = 1为必胜态。

从必败态往上推,能从必败态推出来的就是必胜态,赋值为1,如果是必胜点就不用往上推了。

p[i][j][k]初始化为必败点,如果该点不能从必败点转移过来,该点就是必败点。

由于必败点比较少所以可以节省时间。

#include<stdio.h>
#include<string.h> bool vis[][][]; //卡内存 void fun()
{
int i,j,k;
for(i=;i<=;i++)
{
for(j=;j<=;j++)
{
for(k=;k<=;k++)
{
if(vis[i][j][k]==)
{
int p;
for(p=i+;p<=;p++)
vis[p][j][k]=;
for(p=j+;p<=;p++)
vis[i][p][k]=;
for(p=k+;p<=;p++)
vis[i][j][p]=;
for(p=;p+i<=&&p+j<=;p++)
vis[p+i][p+j][k]=;
for(p=;p+j<=&&p+k<=;p++)
vis[i][p+j][p+k]=;
for(p=;p+i<=&&p+k<=;p++)
vis[p+i][j][p+k]=;
}
}
}
}
} int main()
{
int a,b,c;
memset(vis,,sizeof(vis));
fun();
while(scanf("%d%d%d",&a,&b,&c)!=EOF)
{
printf("%d\n",vis[a][b][c]);
}
return ;
}

ZOJ - 3057 D - Beans Game(三堆威佐夫博弈)的更多相关文章

  1. HDU2177:取(2堆)石子游戏(威佐夫博弈)

    Problem Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同 ...

  2. 【 HDU 2177 】取(2堆)石子游戏 (威佐夫博弈)

    BUPT2017 wintertraining(15) #5C hdu2177 题意 两个人轮流取石子,可以取一堆的任意非负整数个或两堆取相同个,先取完的输. 给定若干组数据:a,b表示两堆的石子数量 ...

  3. HDU2177取(2堆)石子游戏---(威佐夫博弈)

    http://acm.hdu.edu.cn/showproblem.php?pid=2177 取(2堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others)    M ...

  4. HDU 2177 取(2堆)石子游戏 (威佐夫博弈)

    题目思路:威佐夫博弈: 当当前局面[a,b]为奇异局时直接输出0 否则: 1.若a==b,输出(0 0): 2.将a,b不停减一,看能否得到奇异局,若有则输出: 3.由于 ak=q*k(q为黄金分割数 ...

  5. 【POJ1067】取石子游戏 (威佐夫博弈)

    [题目] Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的 ...

  6. hdu 1527 (威佐夫博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1527 Problem Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石 ...

  7. 简单易懂的博弈论讲解(巴什博弈、尼姆博弈、威佐夫博弈、斐波那契博弈、SG定理)

    博弈论入门: 巴什博弈: 两个顶尖聪明的人在玩游戏,有一堆$n$个石子,每次每个人能取$[1,m]$个石子,不能拿的人输,请问先手与后手谁必败? 我们分类讨论一下这个问题: 当$n\le m$时,这时 ...

  8. BZOJ3298[USACO 2011Open]cow checkers——威佐夫博弈

    题目描述 一天,Besssie准备和FJ挑战奶牛跳棋游戏.这个游戏上在一个M*N的棋盘上, 这个棋盘上在(x,y)(0<=x棋盘的左下角是(0,0)坐标,棋盘的右上角是坐标(M-1,N-1). ...

  9. NIM游戏,NIM游戏变形,威佐夫博弈以及巴什博奕总结

    NIM游戏,NIM游戏变形,威佐夫博弈以及巴什博奕总结 经典NIM游戏: 一共有N堆石子,编号1..n,第i堆中有个a[i]个石子. 每一次操作Alice和Bob可以从任意一堆石子中取出任意数量的石子 ...

随机推荐

  1. Yii错误404页面

    'errorHandler'=>array( // use 'site/error' action to display errors 'errorAction'=>YII_DEBUG ? ...

  2. $_validate 自动验证 字段是否重复

    1.在控制器里面实例化 数据表的时候用D方法,不要用M方法 2.在当前Admin下的Model里面建立一个自定义的Model AdminsController.class.php ========== ...

  3. [转]AngularJS 之 Factory vs Service vs Provider

    地址: http://www.oschina.net/translate/angularjs-factory-vs-service-vs-provider

  4. SpringCloud微服务实战——第二章Springboot

    Spring Boot项目工程 src/main/java:主程序入口HelloApplication,可以通过直接运行该类来启动Spring Boot应用. src/main/resources:配 ...

  5. 在CentOS上安装PowerShell

    微软刚刚开源了PowerShell,目前在Linux和MacOS上都能安装.具体的链接如下: https://github.com/PowerShell/PowerShell 本文将介绍如何在Cent ...

  6. ORA-12514: TNS: no listener 解决方案

    服务端:oracle 11g 客户端: pl/sql 问题描述: 用客户端 pl/sql 连接登录的时候,提示 "ORA-12514: TNS: no listener". 在服务 ...

  7. svn-clearup 报错的处理(Cleanup failed to process the following paths...)

    在使用 svn 客户端执行操作失败后,执行 Clean up 操作也报错:Cleanup failed to process the following paths... ,一直不知道是什么原因.通常 ...

  8. [转] linux 启动文件及设置环境变量

    系统级启动文件  ==================================== 1./etc/rc  主启动文件,不要修改它 2./etc/rc.conf  决定启动哪些系统自带的守护进程 ...

  9. 【转】 Pro Android学习笔记(八五):了解Package(4):lib项目

    目录(?)[-] 什么是lib项目 小例子 Lib的实现 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowing ...

  10. 【转】 Pro Android学习笔记(七八):服务(3):远程服务:AIDL文件

    目录(?)[-] 在AIDL中定义服务接口 根据AIDL文件自动生成接口代码 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.n ...