zoukankan      html  css  js  c++  java
  • CF1365A 题解

    Luogu-CF1365A

    题目分析

    如果当前玩家想要在网格图上找一个位置设置为 \(1\),条件式这一个位置所在的行以及列上都没有其它的 \(1\)

    观察到数据范围只有 $1 \leq n,m \leq 50 $,我们可以考虑直接在网格图上操作。

    在读入的时候,只要读入到当前位置的数为 \(1\),我们可以在网格图上将该行和该列上的所有数都标记为 \(1\)

    之后我们可以模拟玩家操作的过程,记录下当前回合谁在操作。每次遍历一遍网格图,如果发现网格图中有 \(0\),就把这个位置变为 \(1\),并且将该行和该列上的每一个数都变为 \(1\)

    以此不断循环,直到遍历网格图时没有 \(0\),就说明一个玩家要输了,此时输出当前不是谁在操作即可。

    代码

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #define ll long long
    using namespace std;
    
    ll n, T, m;
    bool a[100][100], ok = 0;
    
    void change(ll x, ll y){ 
        for (int i = 1; i <= n; ++i) a[i][y] = 1;
        for (int j = 1; j <= m; ++j) a[x][j] = 1;
    } //将该位置的每一行和每一列都该为1
    
    void CLEAR(){ 
        ok = 0;
        memset(a, 0, sizeof a);
    } //初始化
    
    int main()
    {
        T = read();
        while (T--)
        {
            CLEAR(); //初始化
            n = read(), m = read();
            for (int i = 1; i <= n; ++i){
                for (int j = 1; j <= m; ++j){
                    bool x;
                    cin >> x;
                    if (x == 1)
                        change(i, j); //修改
                }
            }
    
            while (1)
            {
                bool f = 0; //为遍历表之后没有找到0而弹出做准备
                for (int i = 1; i <= n; ++i){
                    for (int j = 1; j <= m; ++j){
                        if (a[i][j] == 0){
                            change(i, j);
                            if (ok == 0) ok = 1; //更换谁在操作
                            else ok = 0; //更换谁在操作
                            f = 1; //代表找到了0
                            break;
                        }
                    }
                    if (f == 1)
                        break;
                }
                if (f == 0){ //表里全是1,输出答案
                    if (ok == 0) puts("Vivek");
                    else puts("Ashish");
                    break;
                }
            }
        }
        return 0;
    }
    
  • 相关阅读:
    【转】 MySQL高级知识(一)——基础
    inline元素的间距问题
    ES6对于数组的扩展
    JavaScript的垃圾回收机制
    call() apply() bind()
    防抖和节流
    Promise
    js的事件机制
    Javascript异步操作的异常处理
    JavaScript的事件执行机制及异步
  • 原文地址:https://www.cnblogs.com/EdisonBa/p/14702154.html
Copyright © 2011-2022 走看看