会赢的!(牛客)
题目描述
在一个无限大的二维网格内,阿龙和小歪正在玩一场游戏。我们使用 (i,j)(i,j)(i,j) 表示网格中从上往下数第 iii 行和从左往右数第 jjj 列的单元格。规则如下:
两人共同操作一个棋子,开始位置为 (0,0)(0,0)(0,0) ;
每个回合每人可以将棋子向下或向右移动一格,向下移动一格即抵达 (x+1,y)(x+1,y)(x+1,y) 、向右移动一格即抵达 (x,y+1)(x,y+1)(x,y+1) ;
对于给定的终点 (x,y)(x,y)(x,y) ,在谁的回合中有机会将棋子走到,谁就能胜利;如果谁都不能到达,则视为平局;
∙阿龙先手,双方均采取最优决策(尽可能让自己赢,自己赢不了则尽可能平局);
谁能赢呢。
输入描述:
每个测试文件均包含多组测试数据。第一行输入一个整数 T(1≤T≤104)T\left(1\le T\le 10^4\right)T(1≤T≤104) 代表数据组数,每组测试数据描述如下:
在一行上输入两个整数 x,y(−100≤x,y≤100)x,y \left( -100\leq x,y\leq 100\right)x,y(−100≤x,y≤100) 代表终点。保证与起点不重合。
输出描述:
如果最后阿龙获胜,在一行上输出 YES\rm YESYES ;如果小歪获胜,输出 NO\rm NONO ;否则为平局,直接输出 PING\rm PINGPING 。
示例1
输入
3 1 1 1 0 -1 -1
输出
NO YES PING
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
int a,b;
while(t--){
cin>>a>>b;
int s=a+b;
int x;
x=abs(a-b);
if(a<0||b<0||x>=2)cout<<"PING\n";
else if(s%2!=0&&x<2)cout<<"YES\n";
else if(s%2==0&&x<2)cout<<"NO\n";
}
return 0;
}