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

来源:互联网 发布:it学什么好 编辑:程序博客网 时间:2024/06/07 17:41

Description

一个nm的棋盘,上面有k个棋子,VolodyaVlad开始玩游戏,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;}
原创粉丝点击