CodeForces 55 C.Pie or die(博弈论)

xiaoxiao2021-02-28  104

Description

一个 nm 的棋盘,上面有 k 个棋子,Volodya Vlad 开始玩游戏, Volodya 先手,他每次可以选择一个棋子往上下左右走一步,如果某个棋子出了棋盘就算 Volodya 赢, Vlad 每次可以选择一个边界的格子把这个格子的属于边界的边堵住这样 Volodya 就不能把某个棋子从这个边移动出去,问 Volodya 是否可以赢

Input

第一行三个整数 n,m,k 分别表示棋盘行列数和棋子个数,之后 k 行每行两个整数xi,yi表示第 i 个棋子字第xi行第 yi (1n,m100,0k100,1xin,1yim)

Output

如果 Volodya 可以赢则输出 YES ,否则输出 NO

Sample Input

2 2 1 1 2

Sample Output

YES

Solution

只要 Vlad 可以有四步领先,就可以把四个角分别先堵住一条边,这样以来无论 Volodya 怎么走, Vlad 都可以一步步把 Volodya 的路堵死,否则 Volodya 往四个角跑 Vlad 堵不住,故只要判断是否存在一个点其到边界的距离不超过4即可,如果存在则先手必胜,否则先手必败

Code

#include<cstdio> using namespace std; int main() { int n,m,k,x,y; while(~scanf("%d%d%d",&n,&m,&k)) { int flag=0; while(k--) { scanf("%d%d",&x,&y); if(x<=5||x>=n-4||y<=5||y>=m-4)flag=1; } printf("%s\n",flag?"YES":"NO"); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-56773.html

最新回复(0)