题目描述

一天,Besssie准备和FJ挑战奶牛跳棋游戏。这个游戏上在一个M*N的棋盘上,
这个棋盘上在(x,y)(0<=x棋盘的左下角是(0,0)坐标,棋盘的右上角是坐标(M-1,N-1)。
Bessie每次都是第一个移动棋子,然后Bessie与Fj轮流移动。每一轮可以做以下三种中的一种操作:
1)在同一行,将棋子从当前位置向左移动任意格;
2)在同一列,将棋子从当前位置向下移动任意格;
3)将棋子从当前位置向下移动k格再向左移动k格(k为正整数,且要满足移动后的棋子仍然在棋盘上)
第一个不能在棋盘上移动的人比赛算输(因为棋子处在(0,0)点)。
共有T个回合(1<=T<=1,000),每次给出一个新起始点的坐标(x,y),确定是谁赢。
1<=M<=1,000,000;1<=N<=1,000,000

输入

第1行:两个用空格隔开的整数M和N;  
第2行:一个整数T;  
第3到第T+2行:两个用空格隔开的整数x和y. 

输出

第1到T行:包含“Farmer John”或者是“Bessie”,表示谁赢了这轮游戏。

样例输入

3 3
1
1 1

样例输出

Bessie
  题意可以转化成有两堆石子分别有x,y个,每次每个人可以在一堆取任意个或在两堆取同样多个石子,不能操作的人输。这是经典的威佐夫博弈,按先手必败的通项公式判一下即可。不了解威佐夫博弈可以参见->博弈论详解

#include<set>
#include<map>
#include<queue>
#include<cmath>
#include<stack>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
int n,m;
int T;
int x,y;
int main()
{scanf("%d%d",&n,&m);scanf("%d",&T);while(T--){scanf("%d%d",&x,&y);if(x>y){swap(x,y);}int ans=(y-x)*(1.0+sqrt(5.0))/2.0;if(ans==x){printf("Farmer John\n");}else{printf("Bessie\n");}}
}

转载于:https://www.cnblogs.com/Khada-Jhin/p/9617553.html

BZOJ3298[USACO 2011Open]cow checkers——威佐夫博弈相关推荐

  1. POJ1067_取石子游戏_威佐夫博弈

    /* *State: 1067 Accepted 176K 16MS C++ 435B *题目大意: * 威佐夫博弈 *解题思路: * 略. */ #include <iostream> ...

  2. 洛谷P2252 取石子游戏(威佐夫博弈)

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

  3. 博弈论入门之威佐夫博弈

    威佐夫博弈 威佐夫博弈是一类经典的博弈问题 有两堆石子,两个顶尖聪明的人在玩游戏,每次每个人可以从任意一堆石子中取任意多的石子或者从两堆石子中取同样多的石子,不能取得人输,分析谁会获得胜利 博弈分析 ...

  4. 威佐夫博弈:百练OJ:1067:取石子游戏

    威佐夫博弈(Wythoff's game):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 百练OJ:1067:取石子游戏 ...

  5. POJ-1067取石子游戏,威佐夫博弈范例题/NYOJ-161,主要在于这个黄金公式~~

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K              Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取 ...

  6. HDU - 1527 取石子游戏(威佐夫博弈)

    题目链接:点击查看 题目大意:有两堆石子,两个人轮流取,每次可以取一堆中任意多的石子,或者取两堆中数量相同的石子,先将石子取完者获胜,若先手获胜输出1,后手获胜输出0 题目分析:这个题目涉及到了威佐夫 ...

  7. 杭电acm 2177 取(2堆)石子游戏(威佐夫博弈)

    取(2堆)石子游戏                       Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  8. 威佐夫博弈(模板题)

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

  9. 【HDU - 1527】【POJ - 1067】取石子游戏 (威佐夫博弈)

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

最新文章

  1. SCSI协议与存储的发展
  2. Action类中通过ServletActionContext来获取web资源
  3. PDC Party 即将在东莞登场
  4. 1月22日发布!疑似渠道商泄露荣耀V40价格:3999元起?
  5. Request库入门
  6. Perlin Noise
  7. matlab 小波启发式阈值滤波,小波阈值去噪
  8. 数据持久层框架Mybatis
  9. word2vec模型保存为npy文件 clh
  10. 学习笔记之MOOC《计算机程序设计C++》第5周编程作业
  11. 联邦学习安全防御之差分隐私
  12. 重写equals方法一定要重写hashcode方法吗
  13. ProtonMail邮箱
  14. 概率分布分位点_常用概率分布总结(1)
  15. lua的使用(摘自luachina)
  16. 怎么用华为WeLink进行考勤打卡?
  17. 草图转换网络:SketchyGAN 和 style2paints
  18. 手机专利帝国战争:巨头密集诉讼和专利抢购真相
  19. libgdx的tmx地图处理工具gdx-tiled-preprocessor.jar(TiledMapPacker)修正版
  20. 面对经济危机的8大奇谈怪论

热门文章

  1. HBase+Phoenix整合入门--集群搭建
  2. 搜索引擎反作弊之内容作弊
  3. 前端三大技术 HTML、CSS、JavaScript 快速入门手册
  4. 网络协议基础:“工作中模模糊糊的概念,这次终于理顺了!”
  5. 计算机术语中英文cat表示,pcb 专业术语 中英文对照三
  6. MySQL 高级 游标介绍
  7. 初识ES-安装IK分词器
  8. SpringBoot配置文件-yaml的用法
  9. ConcurrentHashMap的源码分析-fullAddCount源码分析
  10. 基于Guava API 轻松落地观察者模式