[USACO11OPEN]奶牛跳棋Cow Checkers(博弈论)
题目描述
One day, Bessie decides to challenge Farmer John to a game of 'Cow Checkers'. The game is played on an M*N (1 <= M <= 1,000,000; 1 <= N <= 1,000,000) checkerboard that initially contains a single checker piece on the checkboard square coordinates (X, Y) (0 <= X < M; 0 <= Y < N). The bottom leftmost square of the checkerboard has
coordinates (0, 0), and the top rightmost square has coordinates (M-1, N-1). Bessie always moves first, and then the two players alternate turns. Each turn comprises one of three types of moves:
1) Move the checker piece to any square on the same row to the left of its current position.
2) Move the checker piece to any square on the same column below its current position.
3) Move the checker piece to any spot k squares below and k squares to the left of the current square (where k is any positive integer such that this new spot is still on the checkerboard).
The first player unable to make a move (i.e., because the checker is at (0, 0)) loses. Given that Bessie always goes first, determine who will win the game if both play optimally.
Play and report the winner for T games (1 <= T <= 1,000) reading in a new X,Y starting value for each new game.
有一天,Bessie准备玩一个叫做奶牛跳棋的游戏,来挑战Farmer John。
这个游戏的棋盘大小为 M*N (1 <= M <= 1,000,000; 1 <= N <= 1,000,000) 。最初棋盘上只有一个棋子在(x,y),棋盘的左下角坐标是(0,0),右上角的坐标是(M-1,N-1)。
每次游戏Bessie都是第一个开始,之后两个人轮流。
每次下棋的时候都有三种走法:
1.向左走任意步
2.向下走任意步
3.向左走k步然后向下走k步(k可随便取值,只要不走出棋盘)
先走到(0,0)的人就算输。
游戏共有T次,每次都会给出一个新的坐标(x,y),请输出每一轮赢家的名字。
输入输出格式
输入格式:
* Line 1: Two space-separated integers: M and N
* Line 2: A single integer: T
* Lines 3..T+2: Two space-separated integers: X and Y
第一行:M N
第二行:T
第三行到第T+2行:这一轮的X Y
输出格式:
* Lines 1..T: Should contain either 'Farmer John' or 'Bessie' depending on who wins each game.
共T行,每一行输出那一轮的赢家
思路;
这是一道标准的博弈论(不过好难想啊!!)
横坐标和纵坐标可以抽象为两堆石子
向下走任意步=拿出A堆任意个石子,向左走任意步=拿出B堆任意个石子
向左走和向下走相同的任意步=拿出A堆和B堆个数相等的任意个石子
这就抽象成了一个威佐夫博弈的模型
套用公式算一下是否是奇异局面就行(不知道什么是威佐夫博弈的请出门左转百度,讲的很详细)
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#define rii register int i
using namespace std;
int x,y,n,t,m;
int check(int l,int k)
{
if(l>k)
{
swap(l,k);
}
int wzf=(double)((k-l)*(sqrt()+)/);
if(wzf==l)
{
return ;
}
else
{
return ;
}
}
int main()
{
scanf("%d%d",&n,&m);
scanf("%d",&t);
for(rii=;i<=t;i++)
{
scanf("%d%d",&x,&y);
int pd=check(x,y);
if(pd==)
{
cout<<"Bessie"<<endl;
}
else
{
cout<<"Farmer John"<<endl;
}
}
}
[USACO11OPEN]奶牛跳棋Cow Checkers(博弈论)的更多相关文章
- LUOGU P3024 [USACO11OPEN]奶牛跳棋Cow Checkers
		
题目描述 One day, Bessie decides to challenge Farmer John to a game of ‘Cow Checkers’. The game is playe ...
 - 3298: [USACO 2011Open]cow checkers
		
3298: [USACO 2011Open]cow checkers Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 65 Solved: 26[Su ...
 - BZOJ3298: [USACO 2011Open]cow checkers(佐威夫博弈)
		
3298: [USACO 2011Open]cow checkers Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 195 Solved: 96[S ...
 - bzoj 3298: [USACO 2011Open]cow checkers  -- 数学
		
3298: [USACO 2011Open]cow checkers Time Limit: 10 Sec Memory Limit: 128 MB Description 一天,Besssie准备 ...
 - BZOJ3298[USACO 2011Open]cow checkers——威佐夫博弈
		
题目描述 一天,Besssie准备和FJ挑战奶牛跳棋游戏.这个游戏上在一个M*N的棋盘上, 这个棋盘上在(x,y)(0<=x棋盘的左下角是(0,0)坐标,棋盘的右上角是坐标(M-1,N-1). ...
 - 洛谷P1472 奶牛家谱 Cow Pedigrees
		
P1472 奶牛家谱 Cow Pedigrees 102通过 193提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 农民约翰准备 ...
 - BZOJ3298: [USACO 2011Open]cow checkers  威佐夫博弈
		
Description 一天,Besssie准备和FJ挑战奶牛跳棋游戏.这个游戏上在一个M*N的棋盘上, 这个棋盘上在(x,y)(0<=x棋盘的左下角是(0,0)坐标,棋盘的右上角是坐标(M-1 ...
 - 【bzoj3298】[USACO 2011Open]cow checkers(博弈论)
		
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3298 博弈论经典结论题,我也没什么好说的.matrix67大佬比我想得深入的多:捡石子 ...
 - 【dp】奶牛家谱 Cow Pedigrees
		
令人窒息的奶牛题 题目描述 农民约翰准备购买一群新奶牛. 在这个新的奶牛群中, 每一个母亲奶牛都生两个小奶牛.这些奶牛间的关系可以用二叉树来表示.这些二叉树总共有N个节点(3 <= N < ...
 
随机推荐
- 【学习笔记】HTML基础:使用html制作网页
			
一.初识HTML 1.什么是HTML? Hyper Text Markup Language(超文本标记语言) 扩展XML:Extendsible Markup Language(可扩展性标记语言) ...
 - SQL语句执行与结果集的获取
			
title: SQL语句执行与结果集的获取 tags: [OLEDB, 数据库编程, VC++, 数据库] date: 2018-01-28 09:22:10 categories: windows ...
 - JavaScript数组求和
			
<script> function demo(){ var d=document.getElementsByTagName("input")[0].value.spli ...
 - vuejs源码摘抄
			
订阅功能的部分实现代码如下: /* */ var uid = 0; /** * A dep is an observable that can have multiple * directives s ...
 - 分享一个好东西(一天精通MongoDB数据库)
			
https://pan.baidu.com/s/1o7V5e8U 总共几个小时的视频,看了之后醍醐灌顶.分享出来.
 - CSS3控制单行文本的溢出
			
text-overflow用来设置是否使用一个省略标记(...)标示对象内文本的溢出.语法: 但是text-overflow只是用来说明文字溢出时用什么方式显示,要实现溢出时产生省略号的效果,还须定义 ...
 - matlab练习程序(全景图到穹顶图)
			
这个程序我最初是用FreeImage写的,这两天改成了matlab,再不贴上来,我就要忘了. 看到一篇文章有这样的变换,挺有意思的,就拿来试了一下,文章点此. 全景图到穹顶图变换,通俗的说就是将全景图 ...
 - API 的历史
			
原文出处: apievangelist 译文出处:灯下鼠 历史无处不在. 研究我们来自何方,有助于指引我们前行.科技的发展日新月异,但时常停一下匆忙的脚步,稍稍回顾一下历史,却总是有益的. 下面就 ...
 - C# Process.WaitForExit()与死锁
			
前段时间遇到一个问题,搞得焦头烂额,现在记录下来,希望对大家有所帮助. 程序里我使用Process类启动命令行,执行批处理文件 'Create.cmd'(当我手工将此文件拖入命令行执行时,一切正常). ...
 - piranha配置
			
典型的高可用负载均衡 1)lvs + ldirectord + heartbeat lvs(ipvsadmin) 调度器,将用户请求分发到后端真实服务器,不负责健康检查 ldirectord 服务监控 ...