zoukankan      html  css  js  c++  java
  • 2020 CCPC-Wannafly Winter Camp Day3 Div.1&2 E棋技哥

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

    火山哥和鸡老八在下棋。
    这张棋盘是 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 5001n,m500,1≤T≤201le Tle 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;
    }
  • 相关阅读:
    ANSI C 与 C99的不同
    字符串中含有空格的注意事项
    巧用printf函数
    求数列的和
    数值统计
    平方和与立方和
    求奇数的乘积
    第几天?
    细节之重
    用%*c滤掉回车,ASCII码排序
  • 原文地址:https://www.cnblogs.com/hulian425/p/12228770.html
Copyright © 2011-2022 走看看