Codeforces 493D Vasya and Chess

来源:互联网 发布:阿里云备案幕布ps 编辑:程序博客网 时间:2024/05/16 12:15

题目链接:http://codeforces.com/problemset/problem/493/D


题意:有一个n*n的棋盘,(1,1)和(1,n)处分别放置黑白2色的皇后,其余格子放置绿色的棋子,白色皇后先移动,每次移动必须吃掉一个棋子,如果己方皇后被吃掉和无法移动则输,问那方一定会赢,如果白方赢了输出第一步


思路:好久没看到过这么简单的博弈论了……首先确定2种情况,n=2的时候谁先手谁胜,n=3的时候谁先手谁负,假设一个n*n大小的棋盘,白方皇后向下移动一格就变成了(n-1)*n大小的棋盘不过是由黑方先手,黑方皇后向上在移动一格就变成了(n-2)*n大小的棋盘直到棋盘变成3*n则可以判断谁胜谁负;如果白方皇后向右移动,黑方皇后同时向右移动,棋盘视为n*(n-1)大小,重复n-1次之后白方皇后必定只能向下移动,则棋盘视为(n-1)*大小的棋盘不过由黑方先手,如此一来只要判断n的奇偶性就可以判断输赢了,白方皇后必赢的情况第一步一定是向下移动


#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int main(){    int n;    while (scanf("%d",&n)!=EOF)    {        if (n%2==0)        {            printf("white\n%d %d\n",1,2);        }        else printf("black\n");    }}


0 0
原创粉丝点击