题目传送门

题意:一个国际象棋棋盘,有四种棋子,从(n,m)走到(1,1),走到(1,1)的人赢,先手赢输出B,后手赢输出G,平局输出D。

题解:先把从(n,m)走到(1,1)看做是从(1,1)走到(n,m)。

四种棋子的规则如下:

1、王(King):横、竖、斜都可以走,每次限走一格

2、车(Rook):横、竖均可走,不能斜走,格数不受限制,除王车易位的情况下,平时不能越子

3、马(Knight):每步棋先横走或竖走一格,再斜走一格(或者横两格竖一格,竖两格横一格),可以越子

4、后(Queen):横、竖、斜都可以走,格数不受限制,但不能越子

第一种很明显(1,1)是必败点,可以走到必败点的都是必胜点,而只能走到必胜点的都是必败点,所以很容易得出结论:n,m都为奇数则先手必败。

第二种把这个问题看做是两堆石子,取石子问题,是尼姆博弈,异或为0即相等的时候先手必败。

第三种先n--,m--,把问题转化为(0,0)是终点,如果n+m不是3的倍数一定是平局;如果是3的倍数,如果nm相等,那么一定是必败的,先手减2减1,后手就减1减2,必败;如果nm不等且n=m+1或者m=n+1,那么先手必胜,因为可以一步走到必败点,必胜;其余情况都是平局,因为如果一方存在赢的情况,另一方可以不走那步,把小的数-2,大的数-1,往墙上靠,谁也赢不了肯定是平局。

注意:n和m相差1不能用异或=1判断,如果奇数-偶数=1异或确实为1,偶数-奇数=1就不是了,受到以前一道概率DP题的误导结果WA了好多次,那个题是if((j>>(i-1)^1)==(k>>(i-1))) 是足球淘汰赛,01,23,45一组,和这个题不一样,要注意。附上那道题:传送门

第四种也是看做两堆石子,取石子问题,是威佐夫博弈

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int t,a,b,c;
void pra()
{
puts("B");
}
void prb()
{
puts("G");
}
void prc()
{
puts("D");
}
void solve1()
{
if((a&)&&(b&))
prb();
else
pra();
}
void solve2()
{
if((a^b)!=) pra();
else prb();
}
void solve3()
{
a--;
b--;
if((a+b)%!=)
prc();
else
{
if(a<b) swap(a,b);
if(a==b) prb();
else if((a-b)==) pra(); //()
else prc();
}
}
void solve4()
{
a--;
b--;
if(a>b)
swap(a,b);
c=b-a;
if(a==int((sqrt()+)/*c))
prb();
else
pra();
}
int main()
{
cin>>t;
while(t--)
{
cin>>c>>a>>b;
if(c==) solve1();
else if(c==) solve2();
else if(c==) solve3();
else if(c==) solve4();
}
return ;
}

HDU 5754 Life Winner Bo (各种博弈) 2016杭电多校联合第三场的更多相关文章

  1. HDU 5762 Teacher Bo (鸽笼原理) 2016杭电多校联合第三场

    题目:传送门. 题意:平面上有n个点,问是否存在四个点 (A,B,C,D)(A<B,C<D,A≠CorB≠D)使得AB的横纵坐标差的绝对值的和等于CD的横纵坐标差的绝对值的和,n<1 ...

  2. HDU 5752 Sqrt Bo (思维题) 2016杭电多校联合第三场

    题目:传送门. 题意:一个很大的数n,最多开5次根号,问开几次根号可以得到1,如果5次还不能得到1就输出TAT. 题解:打表题,x1=1,x2=(x1+1)*(x1+1)-1,以此类推.x5是不超过l ...

  3. HDU 5795 A Simple Nim (博弈) ---2016杭电多校联合第六场

    A Simple Nim Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  4. HDU 5831 Rikka with Parenthesis II (贪心) -2016杭电多校联合第8场

    题目:传送门. 题意:T组数据,每组给定一个长度n,随后给定一个长度为n的字符串,字符串只包含'('或')',随后交换其中两个位置,必须交换一次也只能交换一次,问能否构成一个合法的括号匹配,就是()( ...

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

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

  6. HDU 5821 Ball (贪心排序) -2016杭电多校联合第8场

    题目:传送门. 题意:T组数据,每组给定一个n一个m,在给定两个长度为n的数组a和b,再给定m次操作,每次给定l和r,每次可以把[l,r]的数进行任意调换位置,问能否在转换后使得a数组变成b数组. 题 ...

  7. HDU 5793 A Boring Question (逆元+快速幂+费马小定理) ---2016杭电多校联合第六场

    A Boring Question Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  8. HDU 5754 Life Winner Bo (博弈)

    Life Winner Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5754 Description Bo is a "Life W ...

  9. HDU 5754 Life Winner Bo 组合博弈

    Life Winner Bo Problem Description   Bo is a "Life Winner".He likes playing chessboard gam ...

随机推荐

  1. 人工蜂群算法-python实现

    ABSIndividual.py import numpy as np import ObjFunction class ABSIndividual: ''' individual of artifi ...

  2. hihoCoder 1195 高斯消元.一

    传送门 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:喂不得了啦,那边便利店的薯片半价了! 小Hi:啥?! 小Ho:那边的便利店在打折促销啊. 小Hi:走走走, ...

  3. Android 设计模式 之 单例模式

    http://blog.csdn.net/fangchongbory/article/details/7734199   目录(?)[+] 单例模式常见情景 首先实现1中的单例模式A 实现2中单例模式 ...

  4. C语言学习-01第一个C语言程序

    一 C语言的历史 C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言. 尽管C语言提供 ...

  5. AspectJ AOP学习基础

    一.切入点表达式 1.execution:匹配方法的执行 格式:execution(修饰符 返回值类型 包.类.方法(参数) throw 异常) 1.1修饰符,表示方法的修饰符,一般省略. 1.2返回 ...

  6. 初学structs2,表单验证

    一.简单表单验证示例 structs.xml配置 <struts> <package name="validate" namespace="/valid ...

  7. win7电脑安装wamp出现httpd.exe无法找到组件MSVCR100.dll的解决办法

    昨天重新安装了系统,今天想装一个wamp,在安装过程中报httpd.exe无法找到组件 如图u 运行wamp,发现图标是黄色的,apache没有选中,测试80端口也未被占用. 重新卸载了,又安装了一遍 ...

  8. Call Paralution Solver from Fortran

    Abstract: Paralution is an open source library for sparse iterative methods with special focus on mu ...

  9. =============Python安装与使用================

    用文本编辑器写Python程序,然后保存为后缀为.py的文件,就可以用Python直接运行这个程序了. Python的交互模式和直接运行.py文件有什么区别呢? 直接输入python进入交互模式,相当 ...

  10. 小白科普之JavaScript的BOM模型

    一.什么是BOM 1. BOM是browser object model的缩写,简称浏览器对象模型: 2. BOM提供了独立于内容而与浏览器窗口进行交互的对象,描述了与浏览器进行交互的方法和接口: 3 ...