【博弈论】51Nod 1534 棋子游戏
题目内容
波雷卡普和瓦西里喜欢简单的逻辑游戏。今天他们玩了一个游戏,这个游戏在一个很大的棋盘上进行,他们每个人有一个棋子。他们轮流移动自己的棋子,波雷卡普先开始。每一步移动中,波雷卡普可以将他的棋子从\((x,y)\) 移动到\((x-1,y)\) 或者\((x,y-1)\) 。而瓦西里可以将他的棋子从\((x,y)\) 移动到\((x-1,y)\) ,\((x-1,y-1)\) 或者\((x,y-1)\) 。当然他们可以选择不移动。
还有一些其它的限制,他们不能把棋子移动到\(x\)或\(y\)为负的座标,或者移动到已经被对手占据的座标。最先到\((0,0)\)的人获胜。
现在给定他们棋子的座标,判断一下谁会获胜。
输入格式
单组测试数据。第一行包含四个整数\(xp,yp,xv,yv(0≤xp,yp,xv,yv≤10^5)\),表示波雷卡普和瓦西里棋子的座标。输入保证他们的棋子在不同位置,而且没有棋子在\((0,0)\)。
输出格式
如果波雷卡普获胜,输出Polycarp,否则输出Vasiliy。
样例输入
2 1 2 25
样例输出
Polycarp
思路
波雷卡普能否取胜就看能不能截住瓦雷西走对角线的路径,或者瓦雷西完全走对角线的最短距离还是大于等于波雷卡普的路径长度。前一种情况只要满足波雷卡普的坐标在第二个人左下角即可。后一种情况,波雷卡普的最少步数是\(x+y\),因为瓦雷西可以斜着走所以最少步数是\(max(x,y)\)。注意当步数相等时是Polycarp获胜,因为波雷卡普先走。
代码
#include <bits/stdc++.h>
using namespace std;
int main(){
	int xp,yp,xv,yv;
	scanf("%d%d%d%d",&xp,&yp,&xv,&yv);
	if((xp<=xv&&yp<=yv)||max(xv,yv)>=xp+yp)
		puts("Polycarp");
	else puts("Vasiliy");
	return 0;
}
												
											【博弈论】51Nod 1534 棋子游戏的更多相关文章
- 51nod 1534 棋子游戏
		
1534 棋子游戏 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 http://www.51nod.com/onlineJudg ...
 - 51Nod 1534 棋子游戏 题解
		
题目 波雷卡普和瓦西里喜欢简单的逻辑游戏.今天他们玩了一个游戏,这个游戏在一个很大的棋盘上进行,他们每个人有一个棋子.他们轮流移动自己的棋子,波雷卡普先开始.每一步移动中,波雷卡普可以将他的棋子从(x ...
 - 51nod 1459 迷宫游戏(dij)
		
题目链接:51nod 1459 迷宫游戏 dij裸题. #include<cstdio> #include<cstring> #include<algorithm> ...
 - 棋子游戏 51Nod - 1534 思维题
		
题目描述 波雷卡普和瓦西里喜欢简单的逻辑游戏.今天他们玩了一个游戏,这个游戏在一个很大的棋盘上进行,他们每个人有一个棋子.他们轮流移动自己的棋子,波雷卡普先开始.每一步移动中,波雷卡普可以将他的棋子从 ...
 - (博弈论)51NOD 1069 Nim游戏
		
有N堆石子.A B两个人轮流拿,A先拿.每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出N及每堆石子的数量,问最后 ...
 - 2018.09.16 loj#10243. 移棋子游戏(博弈论)
		
传送门 题目中已经给好了sg图,直接在上面跑出sg函数即可. 最后看给定点的sg值异或和是否等于0就判好了. 代码: #include<bits/stdc++.h> #define N 2 ...
 - 51Nod 1067 Bash游戏 V2 | 博弈论 Bash
		
n的数据范围非常大,所以不能用标准SG函数 找规律 #include "iostream" #include "cstdio" using namespace ...
 - (博弈论)51NOD 1066 Bash游戏
		
有一堆石子共有N个.A B两个人轮流拿,A先拿.每次最少拿1颗,最多拿K颗,拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出N和K,问最后谁能赢得比赛. 例如N = 3 ...
 - 博弈论入门之nim游戏
		
更好的阅读体验点这里 nim游戏 nim游戏 有两个顶尖聪明的人在玩游戏,游戏规则是这样的: 有\(n\)堆石子,两个人可以从任意一堆石子中拿任意多个石子(不能不拿),没法拿的人失败.问谁会胜利 ni ...
 
随机推荐
- MySQL教程 | 菜鸟教程
			
装数据库失败后的重装步骤!!! --[创建数据库]CREATE DATABASE <数据库名>: --使用mysqladamin 创建数据库-- 使用普通用户,你可能需要特定的权限来创建或 ...
 - 【盗墓笔记】图解使用fat-aar方式在AndroidStudio中打包嵌套第三方aar的aar
			
将一些项目中的一些独立功能打包成aar,不仅能于项目解耦,还能够提供给其它项目使用相同的功能,可谓是为项目开发带来了很大的便利.最近第一次做sdk,碰到一些问题,花了不少时间才解决,所以这里做一下简单 ...
 - JS实现串行请求
			
使用async和await var fn = async function(promiseArr) { for(let i = 0,len = arr.length; i<len; i++) { ...
 - Java 8 Stream API实例
			
一.开篇 Stream?其实就是处理集合的一种形式,称之为流,在Java8中被引入,可被Collection中的子类调用. 作用?简化代码,提升你的开发效率. 不会?看完这篇你就能自己上手了! 二.实 ...
 - oracle之三目录库和辅助库
			
目录库和辅助库 10.1 创建目录库(Catalog database)的必要性 如果没有catalog,RMAN的存储库(元数据)保存在目标库的控制文件里,这样可能存在如下隐患 1)目标库上的控制文 ...
 - 吴恩达《深度学习》-第一门课 (Neural Networks and Deep Learning)-第三周:浅层神经网络(Shallow neural networks) -课程笔记
			
第三周:浅层神经网络(Shallow neural networks) 3.1 神经网络概述(Neural Network Overview) 使用符号$ ^{[
 - [SqlServer]数据库备份-问题及解决
			
正常数据库备份 备份:右键要备份的数据库-任务-备份 还原:右键数据库-还原数据库 问题1-"还原数据库备份时报错"介质集有2个介质簇,但只提供了1个.必须提供所有成员" ...
 - netty之decoder
			
转载自:https://blog.csdn.net/jzft_nuosu/article/details/80341018 netty的handler和decoder中的channelRead和dec ...
 - Mac新手必看教程——轻松玩转Mac OS
			
背景: 大部分用户接触的第一个操作系统大多是windows,本人记得曾经小学的微机课也是以win98为基础学习了一众office软件.随着工作的多样化,单一的windows系统已经无法满足部分需求,而 ...
 - idea快捷键壁纸