HDoj-1527-取石子游戏
取石子游戏
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3781 Accepted Submission(s): 1904
游戏開始由两个人轮流取石子。
游戏规定。每次有两种不同的取法,一是能够在随意的一堆中取走随意多的石子;二是能够在两堆中同一时候取走同样数量的石子。最后把石子所有取完者为胜者。如今给出初始的两堆石子的数目。如果轮到你先取,如果两方都採取最好的策略,问最后你是胜者还是败者。
2 1
8 4
4 7
0
1
0解题思路:
看到这样的博弈题目。第一反应就是当中存在一定的内部规律:
这个游戏就是所谓的威佐夫博弈(Wythoff Game),果然够简单,够经典————“黄金切割! ! !”
观察这组数据:
************************************************
第一堆 第二堆(不区分两堆先后顺序) 差值
0 0 0
2 1 1
5 3 2
7 4 3
10 6 4
13 8 5
................................................
前几个必败点例如以下:(0,0),(1。2),(3,5),(4,7),(6。10)。(8,13)……
能够发现。对于第k个必败点(m(k),n(k))来说,
m(k)是前面没有出现过的最小自然数,
n(k)=m(k)+k
而:
m(k) = k * (1 + sqrt(5))/2
n(k) = m(k) + k
这两个公式不知道为什么是这样?好像是威佐夫博弈(Wythoff Game)的一部分
求大神解读...#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const double q=(1+sqrt(5.0))/2.0;
int main()
{
int a,b,x,y;
while(~scanf("%d %d",&a,&b))
{
x=min(a,b);
y=a+b-x;
if(x==(int)((y-x)*q)
{
cout<<0<<endl;
}
else cout<<1<<endl;
}
return 0;
}
HDoj-1527-取石子游戏的更多相关文章
- hdu 1527 取石子游戏(Wythoff Game)
题意:Wythoff Game 思路:Wythoff Game #include<iostream> #include<stdio.h> #include<math.h& ...
- HDU 1527 取石子游戏 (威佐夫博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1527 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是 ...
- HDU 1527 取石子游戏(威佐夫博弈)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- 题解报告:hdu 1527 取石子游戏(威佐夫博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1527 Problem Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石 ...
- HDU 1527 取石子游戏(威佐夫博弈)
基础威佐夫博弈,判断奇异局势即可,判断方式为k为两数之差绝对值,(sqrt(5) + 1) / 2 * k若等于两数小者则为奇异局势,也就是必败态. #include<stdio.h> # ...
- 取石子游戏 HDU 1527 博弈论 威佐夫博弈
取石子游戏 HDU 1527 博弈论 威佐夫博弈 题意 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两 ...
- HDU-1527 取石子游戏
http://acm.hdu.edu.cn/showproblem.php?pid=1527 交换 :可实现. if( n < m ) { n^=m; m^=n; n^=m; } (三)尼姆博 ...
- Games:取石子游戏(POJ 1067)
取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 37662 Accepted: 12594 Descripti ...
- HDU 2516 取石子游戏(斐波那契博弈)
取石子游戏 Time Limit: 2000/1000 MS(Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- HDU 2516 取石子游戏(FIB博弈)
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
随机推荐
- (译)Node.js的 EventEmitter 教程
原文标题:Node.js EventEmitter Tutorial 原文链接:http://www.hacksparrow.com/node-js-eventemitter-tutorial.htm ...
- (转)原子操作 Interlocked系列函数
上一篇<多线程第一次亲密接触 CreateThread与_beginthreadex本质区别>中讲到一个多线程报数功能.为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是 ...
- Redis的入门Demo(java)
java代码部分参考了:http://www.runoob.com/redis/redis-java.html 在java中使用Redis,需要引入Redis驱动,就是jedis-2.1.0.jar, ...
- 打印 PHP $_SERVER 常量
foreach( $_SERVER as $var => $value){ echo $var.' '.$value.'<br>'; };
- iOS 之播放系统声音
导入框架: 代码: #import <UIKit/UIKit.h> #import <AudioToolbox/AudioToolbox.h> @interface MsgPl ...
- [转] IOS中AppDelegate中的生命周期事件的调用条件
IOS中AppDelegate中的生命周期事件的调用条件 //当应用程序将要进入非活动状态执行,在此期间,应用程序不接受消息或事件,比如来电 - (void)applicationWillResign ...
- 【转】context和getApplicationContext()介绍
在android中常常会遇到与context有关的内容,大多都是作为参数在传递,但是它的作用究竟是什么呢 先说它的用法,举个例子 在语句 AlertDialog.Builder builder = n ...
- 调不尽的内存泄漏,用不完的Valgrind
调不尽的内存泄漏,用不完的Valgrind Valgrind 安装 1. 到www.valgrind.org下载最新版valgrind-X.X.X.tar.bz2 2. 解压安装包:tar –jxvf ...
- setTimeout 虚假的“异步”
看这篇http://www.laruence.com/2009/09/23/1089.html 所以实际上 setTimeout更像是任务按照队列执行 经过setTimeout设置后任务放在了队尾 ...
- 使用libcurl POST数据和上传文件
为了具有通用性,将文件的内容读到了fc变量中,fclen是fc的长度.fc也可以是任何其它内容.curl 是 libcurl句柄.演示省略了很多显而易见的步骤. 1. 普通的post请求,这里用c ...