HDU 5973 Game of Taking Stones (威佐夫博弈+高精度)
题意:给定两堆石子,每个人可以从任意一堆拿任意个,也可以从两堆中拿相同的数量,问谁赢。
析:直接运用威佐夫博弈,floor(abs(a, b) * (sqrt(5)+1)/2) == min(a, b) 是必败态。用java的BigDecimal,是很好用的,要十分求Sqrt(5).
代码如下:
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner; public class Main{
public static final int maxn = 3000 + 5; public static void main(String []args){
Scanner cin = new Scanner(System.in);
BigDecimal l = new BigDecimal("2");
BigDecimal r = new BigDecimal("3");
BigDecimal f = new BigDecimal("5");
BigDecimal x = l;
for(int i = 0; i < 500; ++i){
BigDecimal mid = l.add(r).divide(x);
if(mid.multiply(mid).compareTo(f) < 0) l = mid;
else r = mid;
}
l = l.add(BigDecimal.ONE); while(cin.hasNext()){
BigDecimal a = cin.nextBigDecimal();
BigDecimal b = cin.nextBigDecimal();
if(a.compareTo(b) > 0){
BigDecimal tmp = a;
a = b;
b = tmp;
}
BigDecimal t = b.subtract(a).multiply(l).divide(BigDecimal.valueOf(2));
BigInteger p = t.toBigInteger();
BigInteger q = a.toBigInteger();
if(p.equals(q)) System.out.println("0");
else System.out.println("1");
}
}
}
HDU 5973 Game of Taking Stones (威佐夫博弈+高精度)的更多相关文章
- HDU 5973 Game of Taking Stones 威佐夫博弈+大数
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5973 Game of Taking Stones Time Limit: 2000/1000 MS ...
- HDU - 5973 Game of Taking Stones (威佐夫博弈 高精度)
题目描述: Two people face two piles of stones and make a game. They take turns to take stones. As game r ...
- HDU 1527 取石子游戏 (威佐夫博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1527 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是 ...
- HDU 1527 取石子游戏(威佐夫博弈)
基础威佐夫博弈,判断奇异局势即可,判断方式为k为两数之差绝对值,(sqrt(5) + 1) / 2 * k若等于两数小者则为奇异局势,也就是必败态. #include<stdio.h> # ...
- 题解报告:hdu 1527 取石子游戏(威佐夫博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1527 Problem Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石 ...
- hdu 1527 (威佐夫博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1527 Problem Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石 ...
- 取石子游戏 HDU 1527 博弈论 威佐夫博弈
取石子游戏 HDU 1527 博弈论 威佐夫博弈 题意 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两 ...
- HDU 2177 取(2堆)石子游戏 (威佐夫博弈)
题目思路:威佐夫博弈: 当当前局面[a,b]为奇异局时直接输出0 否则: 1.若a==b,输出(0 0): 2.将a,b不停减一,看能否得到奇异局,若有则输出: 3.由于 ak=q*k(q为黄金分割数 ...
- HDU 1527 取石子游戏(威佐夫博弈)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
随机推荐
- 剑指offer——二叉树的深度与平衡二叉树的判断
通过后续遍历,可以减少重复访问 #include <iostream> #include <string> using namespace std; struct Binary ...
- 算法(Algorithms)第4版 练习 1.5.5
对于quick-find,对每个输入数据对,其最少的循环次数为N(sites) 故对于109 sites和106 input pairs,其总的指令次数为:sum = 10^9 * 10^6 * 10 ...
- Ubuntu application
inkscape 矢量画图 gimp 类PS gpick 抓色工具 kdenlive 视频编辑 blender 3D Tweaks 外观设置 Krita 绘画工具 Fontforge 字体制作工具 B ...
- php一维数组的创建
php一维数组的创建 (1)通过array函数声明数组 使用array 函数定义数组,该函数返回通过所接受接收的参数建立的数组.array 函数使用的格式如下. $arry_name = array( ...
- unity3D编辑器扩展
编辑器扩展只是在编辑项目中运行,发布出来是不会运行的. 固定创建一个文件夹Editor:所有的资源或者代码都不会被打包进去. 01.使用MenuItem添加菜单栏按钮 脚本不需要作为组件存在,可以不用 ...
- 初识JQuery(1)-选择器
初识jquery 在学习jquery之前,就有看过一些相关的视频,才知道它是可以写很少的代码就可以完成很多事的.记得第一写轮播图的时候,首先就百度了篇轮播图的实现,当时还不知道自己百度的其实不是原生的 ...
- node.js+express+jade系列四:jade嵌套的使用
jade是express自带的模板引擎 jade文件可以嵌套使用,include引用外部jade文件,extends引用jade模板 例如 有一个主jade文件layout.jade,引用top.ja ...
- conda 里的 jupyter
1. 安装conda https://mirrors.tuna.tsinghua.edu.cn/anaconda/ 下载并安装. 2. 安装jupyter (1)在ananconda主环境安装:pip ...
- 10 - Django应用第七步
1 自定义管理表单 通过在admin.py注册之后可以在后台中管理相应注册的表 但是我们还学要更多的自定义操作 polls/admin.py from django.contrib import ad ...
- Silk codec的一些资料
Skype表示它最近将开始向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音频编码器. Silk下载地址如下 http://developer.skype.com/silk/SILK_ ...