HDU 5973:http://acm.hdu.edu.cn/showproblem.php?pid=5975

题意:

  有两堆石子,每次可以从一堆石子中取任意个,或者从两堆石子中取相同个数的石子。两个人轮流用这种策略取石子,谁取完所有的石子就算胜利。问先手胜还是后手胜。

思路:

  一模一样的威佐夫博奕(Wythoff Game),结论的是,假设a>b,那么如果((1+sqrt(5))* (a - b))/2 == b ,那么先手必输。但是这道题的数据比较大,所以需要java做高精度。

import javax.swing.*;
import java.util.Scanner;
import java.math.BigDecimal; public class Main{
public static void main(String[] args) {
BigDecimal One = new BigDecimal(1);
BigDecimal Two = new BigDecimal(2);
BigDecimal Five = new BigDecimal(5);
// BigDecimal two = new BigDecimal(2); // System.out.println(One.compareTo(Two));//-1
BigDecimal le = new BigDecimal(2);
BigDecimal ri = new BigDecimal(3);
BigDecimal mid = le.add(ri).divide(Two); for(int i= 1; i<=400; i++) {
mid = le.add(ri).divide(Two);
if(mid.multiply(mid).compareTo(Five) == -1 ) {
le = mid;
}
else ri = mid;
} BigDecimal k = (One.add(mid)).divide(Two);
//System.out.println(k);
Scanner in = new Scanner(System.in); while(in.hasNext()) {
BigDecimal a = in.nextBigDecimal();
BigDecimal b = in.nextBigDecimal();
BigDecimal det = new BigDecimal(0);
int flag = 1;
if(a.compareTo(b) == -1)
{
det = b.subtract(a);
det = det.multiply(k);
//long l = bd.setScale( 0, BigDecimal.ROUND_DOWN ).longValue(); // 向下取整
det = det.setScale( 0, BigDecimal.ROUND_DOWN );
if(det.compareTo(a) == 0) {
flag = 0;
}
}
else {
det = a.subtract(b);
det = det.multiply(k);
//long l = bd.setScale( 0, BigDecimal.ROUND_DOWN ).longValue(); // 向下取整
det = det.setScale( 0, BigDecimal.ROUND_DOWN );
if(det.compareTo(b) == 0) {
flag = 0;
}
}
System.out.println(flag); } }
}

HDU 5973

HDU 5973 Aninteresting game 威佐夫博奕(Wythoff Game)的更多相关文章

  1. 博弈论基础知识: 巴什博奕+斐波那契博弈+威佐夫博奕+尼姆博弈(及Staircase)(转)

    (一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜.若(m+1) | n,则先手必败,否则先手必胜.显然,如果n=m+1 ...

  2. hdu 2177 取(2堆)石子游戏(威佐夫博奕)

    题目链接:hdu 2177 这题不是普通的 Nim 博弈,我想它应该是另一种博弈吧,于是便推 sg 函数打了个 20*20 的表来看,为了方便看一些,我用颜色作了标记,打表代码如下: #include ...

  3. hdu 2177(威佐夫博奕)

    题意:容易理解,在威佐夫博奕的基础上新增加了一条要求:就是如果在赢得条件下,输出第一步怎么走. 分析:使用暴力判断,详细见代码. 代码: #include<stdio.h> #includ ...

  4. hdu 1527(威佐夫博奕)

    题意:容易理解. 分析:威佐夫博奕的模板题. 代码实现: #include<stdio.h> #include<string.h> #include<math.h> ...

  5. 【威佐夫博奕】 betty定理 poj 1067

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

  6. poj1067威佐夫博奕

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 31490   Accepted: 10374 Descripti ...

  7. 博弈---威佐夫博奕(Wythoff Game)

    这个写的不错 威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同 时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜.     这种情况下是颇为复杂 ...

  8. 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)- chess(威佐夫博奕)

    ---恢复内容开始--- 链接:https://www.nowcoder.com/acm/contest/116/G来源:牛客网 题意:一个棋盘,老王和小人下棋,棋子只能往下或者往左或者往左下走,小人 ...

  9. Poj 1067 取石子游戏(NIM,威佐夫博奕)

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

随机推荐

  1. T-SQL 恢复数据库

    USE master GO ALTER DATABASE DEMO SET SINGLE_USER GO ALTER DATABASE DEMO SET EMERGENCY GO DBCC CHECK ...

  2. 【原创】NES第一波:如何用通用型6502宏汇编器,制用NES/FC游戏。

    在163的博客关了呀.在这边重新开张了. 以后若网友有什么要长篇解答的问题,也在这儿作答. 作为第一波原创文章,我打算做一次小白示范.那就是一步一步的展示某个汇编编译器的用法. 一.科普 很多人认为程 ...

  3. centos7安装mongodb详解

    记录一下linux下安装mongodb数据库过程. 安装mongodb #下载linux版本的tar文件#  例如笔者下载的是:mongodb-linux-x86_64-rhel70-3.4.4.tg ...

  4. Winform DataGridView 取消默认选中行

    困境 网上有很多解决方法,可是很多读者照做并不生效.追究其原因,问题出现在许多博主没有搞清楚DataGridView绑定与当前触发事件的关系. 复现 private void Frm_Load(obj ...

  5. alluxio2.0特性-预览

    项目地址 https://github.com/Alluxio/alluxio/tree/branch-2.0-preview 2.0版本-构思和设计 支持超大规模数据工作负载 Alluxio作为计算 ...

  6. WebService—— IDEA创建WebServices

    一.File–>New–>Project 弹出这个对话框后,照下图的勾选然后点击Next,然后填写项目名和项目路径后,点击finish. 二.生成目录如下 需要注意的有HelloWorld ...

  7. 守望先锋app(2)

    上次的功能完成了英雄名字.id.头像的下载并使用RecyclerView展示, 所以接下来就是点击每个英雄的caraview就能打开下一个活动进行英雄的介绍.先打开暴雪的官网查看有那些技能.故事.图片 ...

  8. android ——多线程编程

    1.定义一个线程只需要新建一个类继承自Thread.然后重写run()方法,并在里面编写耗时逻辑即可: class MyThread extends Thread{ public void run() ...

  9. powerdesign进军(二)--oracle数据源配置

    目录 资源下载(oracle客户端) 配置 查看系统的数据源 powerdesign 连接数据库 title: powerdesign进军(二)--oracle数据源配置 date: 2019-05- ...

  10. Node.js爬虫实战 - 爬你喜欢的

    前言 今天没有什么前言,就是想分享些关于爬虫的技术,任性.来吧,各位客官,里边请... 开篇第一问:爬虫是什么嘞? 首先咱们说哈,爬虫不是"虫子",姑凉们不要害怕. 爬虫 - 一种 ...