2020 CCPC-Wannafly Winter Camp Day3 Div.1&2 E棋技哥

链接:https://ac.nowcoder.com/acm/contest/4114/E

火山哥和鸡老八在下棋。
这张棋盘是  n×mn\times mn×m的。每一个格子要么是黑色的,要么是白色的。
两个人轮流进行操作。火山哥先手。每一次可以选择一个黑色的格子,以这个格子为右下角,棋盘左上角为左上角,将这个矩阵的所有格子的颜色由黑变成白,由白变成黑。如果找不到一个黑色的格子,那么那个人就输了。
现在两个人都想让火山哥赢,请问谁能赢呢。

输入描述:

第一行一个整数 T{T}T,表示有 T{T}T 组数据。
每组数据第一行两个整数 n,m{n,m}n,m,表示棋盘的大小。
接下来 n{n}n 行每行 m{m}m 个字符0(白色)或者1(黑色),描述了这个棋盘的初始状态。
1≤n,m≤5001\le n,m\le 5001n,m500,1≤T≤201\le T\le 201T20

输出描述:

对于每组的每个询问,输出一行,如果火山哥赢输出“call”,鸡老八赢输出“aoligei”(不含引号)。
示例1

输入

复制
3
2 2
11
11
3 2
01
10
11
2 2
00
11

输出

call
aoligei
aoligei



题解:a[0][0]那个棋是0的话,且你可以翻转的话,无论你怎么反转,翻转以后a[0][0]都变成1,那么后手就可以翻转,所以先手必败
代码
#include<iostream>
#include<string>
#include <cstdlib>
#include <algorithm>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>

const int N = 1000 + 5;
string a[505];

int main()
{
    int t;
    scanf("%d", &t);
    while (t--)
    {
        int m, n;
        scanf("%d%d", &n, &m);
        for (int i = 0;i < n; i++){
            cin >> a[i];
        }
            if (a[0][0] == '0') puts("aoligei");
            else puts("call");
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/hulian425/p/12228770.html