链接:https://ac.nowcoder.com/acm/contest/4114/E
火山哥和鸡老八在下棋。
这张棋盘是 n×mn imes mn×m的。每一个格子要么是黑色的,要么是白色的。
两个人轮流进行操作。火山哥先手。每一次可以选择一个黑色的格子,以这个格子为右下角,棋盘左上角为左上角,将这个矩阵的所有格子的颜色由黑变成白,由白变成黑。如果找不到一个黑色的格子,那么那个人就输了。
现在两个人都想让火山哥赢,请问谁能赢呢。
这张棋盘是 n×mn imes 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≤5001le n,mle 5001≤n,m≤500,1≤T≤201le Tle 201≤T≤20
输出描述:
对于每组的每个询问,输出一行,如果火山哥赢输出“call”,鸡老八赢输出“aoligei”(不含引号)。
示例1
输出
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; }