©此题中在N×M的棋盘中从(1,1)走到(N,M)B先走G后走,谁先到(N,M)谁赢,走法分为4中分别是国际象棋中的国王,车,马,王后的发,在四种走法下谁能赢;

我们依次分析每一种棋子。

①王。

首先注意一个3*3的棋盘,开始在(1,1),问走到(3,3)谁有必胜策略。

穷举所有情况,容易发现这是后手赢。

对于NN和MM更大的情况,我们把横坐标每隔3、纵坐标每隔3的点都画出来,这些点都是符合后手胜的。 
(因为无论先手怎么移动,后手都能重新移动到这些格子,直到到了终点)

如果初始点不在这些点上,就必然是先手胜。因为先手可以立刻移动到上述的点。

②车。

注意到,如果目前的位置距离终点的xx和yy坐标差相等,一定是后手胜。 
(因为先手只能向下或者向右走一段路;无论他往哪里走,后手往另一维走相同的步数,依然保持这一样一种状态。)

反之,先手必然能走到一处相等的位置,转化为上述问题,所以一定是先手胜。

③马。

  因为只能向右下走所以有两种走法,左1右2,和左2右1;棋盘内有的是可以到达且到达的步数是不变的,分别设走1的k1步,第2种走法的为k2步;可以有方程k1*1+k2*2=m,k1*2+k2*1=n;联立求解,若k1,k2为正整数则能分出胜负;

根据奇偶求胜负。但是还有一点要注意,因为谁都不想输所以要输的人尽量走成平局,这种情况需判断k1与k2间之差大于等于2;大于2就是平局,不难推出。

④皇后。

  仔细观察可发现这是一个威佐夫博弈,可利用n,m之差乘以1.618完美比例与m,n中最小的值进行比较若想等则后手赢。

以下是代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include<algorithm>
#define LL long long
#define d (sqrt(5)+1)/2 //黄金比例
using namespace std;
int main()
{
int t,type,n,m;
cin>>t;
while(t--)
{
scanf("%d%d%d",&type,&n,&m);
if(m>1000||n>1000||n<2||m<2)
continue;
n--,m--;
if(type==1)
{
if(n%2==0&&m%2==0)
printf("G\n");
else
printf("B\n");
}
if(type==2)
{
if(n==m)
{
printf("G\n");
}
else
printf("B\n");
}
if(type==3)
{
if((2*n-m)/3*3==2*n-m&&(2*m-n)/3*3==2*m-n)
{
int k1=(2*n-m)/3;
int k2=(2*m-n)/3;
int k=k2+k1;
if(abs(k1-k2)>1)
{
printf("D\n");
continue ;
}
else if(k%2==0)
{
printf("G\n");
}
else
printf("B\n");
}
else
printf("D\n");
}
if(type==4)
{
if((int)(abs(n-m)*d)==min(n,m)) // 注意 (abs(n-m)*d)一定要转换成int型的否则会出错;
{
printf("G\n");
}
else
printf("B\n");
}
}
return 0;
}

  

多校hdu5754(博弈)的更多相关文章

  1. HDU 4678 Mine (2013多校8 1003题 博弈)

    Mine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submis ...

  2. HDU 5724 Chess (状态压缩sg函数博弈) 2016杭电多校联合第一场

    题目:传送门. 题意:有n行,每行最多20个棋子,对于一个棋子来说,如果他右面没有棋子,可以移动到他右面:如果有棋子,就跳过这些棋子移动到后面的空格,不能移动的人输. 题解:状态压缩博弈,对于一行2^ ...

  3. HDU 5754 Life Winner Bo (各种博弈) 2016杭电多校联合第三场

    题目:传送门 题意:一个国际象棋棋盘,有四种棋子,从(n,m)走到(1,1),走到(1,1)的人赢,先手赢输出B,后手赢输出G,平局输出D. 题解:先把从(n,m)走到(1,1)看做是从(1,1)走到 ...

  4. HDU 4642 Fliping game (2013多校4 1011 简单博弈)

    Fliping game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  5. 2017年上海金马五校程序设计竞赛:Problem G : One for You (博弈)

    Description Given a m × n chessboard, a stone is put on the top-left corner (1, 1). Kevin and Bob ta ...

  6. hdu-5754 Life Winner Bo(博弈)

    题目链接: Life Winner Bo Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 131072/131072 K (Java/ ...

  7. 2019年杭电多校第三场 1008题Game(HDU6610+带修改莫队+Nim博弈)

    题目链接 传送门 题意 给你\(n\)堆石子,每堆有\(a_i\)堆石子,\(q\)次操作: 在\([L,R]\)内有多少个子区间使得\(Alice\)(先手)在\(Nim\)博弈中获胜: 交换\(a ...

  8. hdu多校第七场 1006(hdu6651) Final Exam 博弈

    题意: 有n道题,这n道题共m分,要求你至少做出k道才能及格,你可以自由安排复习时间,但是只有某道题复习时间严格大于题目分配的分值时这道题才能够被做出来,求最少的,能够保证及格的复习时间.复习时间和分 ...

  9. Solution -「多校联训」博弈

    \(\mathcal{Description}\)   Link.   A B 两人在树上博弈,初始时有一枚棋子在结点 \(1\).由 A 先操作,两人轮流移动沿树上路径棋子,且满足本次移动的树上距离 ...

随机推荐

  1. iOS 阿里百川SDK集成注意点

    百川SDK是阿里系OneSDK的终极版本,里面包含了所有的阿里系的基本所有的SDK,集成的时候你只需要勾选对应的你需要的模块,然后生成对应的SDK即可,百川主要是针对帮助APP开发者在各种场景下快速. ...

  2. phpcs,phpmd,phan安装部署,phpstorm配置phpunit

    git参考地址:https://github.com/YunhanTech/overview/blob/master/php/learn-road.md phpcs 安装 composer globa ...

  3. Python2.6升级Python2.7

    Python2.6升级2.7 由于Centos6系列自带的python版本为2.6.6,然而有很多应用需要依赖于python2.7来实现,所以有了这个升级的需求.升级原理很简单,无非就是下载.编译.安 ...

  4. fzu2181(点的双连通分量+求奇环)

    求出每个点双连通分量,如果在一个点双连通分量中有奇环,则这个分量每个点都在一个奇环中.  关键是要知道怎么求点双连通分量以及点双连通的性质. fzu2181 http://acm.fzu.edu.cn ...

  5. [转] android获取手机信息大全

    原文链接:http://blog.csdn.net/hytfly/article/details/8552483 IMEI号,IESI号,手机型号: private void getInfo() { ...

  6. 单片机教程4.C语言基础以及流水灯的实现

    单片机教程4.C语言基础以及流水灯的实现 C语言,没接触过计算机编程语言的人会把它看的很神秘,感觉非常的难,而在我看来,C语言的逻辑和运算,就是小学水平,所以大家不要怕它,我尽可能的从小学数学逻辑方式 ...

  7. Xamarin.Forms学习之XAML命名空间

    大家好,我又悄咪咪的来了,在上一篇的Xamarin文章中简单介绍了Xamarin的安装过程,妈蛋没想到很多小朋友很感激我,让他们成功的安装了Xamarin,然后......成功的显示了经典的两个单词( ...

  8. SpringBoot使用H2内嵌数据库

    1.驱动 我们知道,JDBC是JDK自带的接口规范,不同的数据库有不同的实现,只需要引入相应的驱动包即可. 在使用MySQL数据库时,引入的是MySQL驱动,相应的,使用H2数据库时,也需要引入H2驱 ...

  9. 在使用NavigationController情况下的布局的Y轴的起始位置

    在有的时候,当一个ViewController被push进一个NavigationController的时候,view上会有一个高度为64的NavigationBar(除非主动隐藏了Navigatio ...

  10. 禁止向 HTML 页面输出未经安全过滤或未正确转义的用户数据。

    https://github.com/alibaba/p3c/blob/master/阿里巴巴Java开发手册(详尽版).pdf 5. [强制]禁止向 HTML 页面输出未经安全过滤或未正确转义的用户 ...