洛谷P2252 取石子游戏(威佐夫博弈)
题目背景
无
题目描述
有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。
输入输出格式
输入格式:
输入共一行。
第一行共两个数a, b,表示石子的初始情况。
输出格式:
输出共一行。
第一行为一个数字1、0或-1,如果最后你是胜利者则为1;若失败则为0;若结果无法确定则为-1。
输入输出样例
8 4
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; }
洛谷P2252 取石子游戏(威佐夫博弈)相关推荐
- HDU - 1527 取石子游戏(威佐夫博弈)
题目链接:点击查看 题目大意:有两堆石子,两个人轮流取,每次可以取一堆中任意多的石子,或者取两堆中数量相同的石子,先将石子取完者获胜,若先手获胜输出1,后手获胜输出0 题目分析:这个题目涉及到了威佐夫 ...
- 取两堆石子(威佐夫博弈)
有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法, 一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者 ...
- 洛谷 P4706 取石子 解题报告
P4706 取石子 题目描述 现在 Yopilla 和 yww 要开始玩游戏! 他们在一条直线上标记了 \(n\) 个点,从左往右依次标号为 \(1, 2, ..., n\) .然后在每个点上放置一些 ...
- 洛谷P1288 取数游戏II[博弈论]
题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流 ...
- 洛谷----P1123 取数游戏
题目描述 一个N×M的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻8个格子中的一个即认为这两个数字相邻),求取出数字和最大是多少. ...
- 【HDU - 2516 】取石子游戏 (Fibonacci博弈)
题干: 1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍.取完者胜.先取者负输出"Second win".先取者胜 ...
- POJ1067 HDU1527 取石子游戏【博弈】
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 威佐夫博弈:百练OJ:1067:取石子游戏
威佐夫博弈(Wythoff's game):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 百练OJ:1067:取石子游戏 ...
- POJ-1067取石子游戏,威佐夫博弈范例题/NYOJ-161,主要在于这个黄金公式~~
取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取 ...
最新文章
- docker学习实践之路[第五站]mysql镜像应用
- python中append函数合并列表且列表内数字从高到低_35个高级Python知识点总结
- Java设计模式(九):模板方法设计模式
- [.NET Core].NET Core R2安装及示例教程
- Java命令:jstack — 获取线程dump信息
- 基本线程同步(五)使用Lock同步代码块
- java drawpolygon_Java如何绘制和填充有孔的Polygon
- 再看《JavaScript高级程序设计》第8-9章
- matlab如何看线性趋势线,“excle直线拟合“excel 趋势线 是怎么计算出来的
- JAVA实现Html转Pdf(wkhtmltopdf)
- MultiTracker 多目标跟踪算法
- 【暑假集训】F1方程式冠军
- 时间戳转换格林威治时间
- Cartoon Animator动画制作软件CTA自动保存项目小工具
- Excel中文本的拆分与合并
- Macbook Pro 外接显示器后,鼠标滑动延迟
- edge如何导入html文件收藏夹,Edge浏览器如何导入导出收藏夹(目录位置)
- 同步降压电路PCB布局注意事项
- 1 计算机主机里面都有些什么东西,电脑主机配件有哪些 电脑主机配件介绍【详解】...
- PX4中vtol_att_control 源码解析
热门文章
- bash: dotnet: 未找到命令..._Docker 常用命令(.NET Core示例)
- tf.keras.layers.Reshape 示例
- mysql 连接 查询 连表查询
- 14.关于原子性的相关介绍
- 四十三、文件存储空间管理
- 第一次调研快速入门查找期刊及分级?
- 【tensorboard】从tensorboard上看出模型是否存在过拟合
- 利用OpenCv读取一张图片并显示
- LeetCode 53. Maximum Subarray--动态规划--C++,Python解法
- Chrome与chromedriver版本对应