• CF985B Switches and Lamps 思维 第十九


    Switches and Lamps
    time limit per test
    3 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    You are given n switches and m lamps. The i-th switch turns on some subset of the lamps. This information is given as the matrix aconsisting of n rows and m columns where ai, j = 1 if the i-th switch turns on the j-th lamp and ai, j = 0 if the i-th switch is not connected to the j-th lamp.

    Initially all m lamps are turned off.

    Switches change state only from "off" to "on". It means that if you press two or more switches connected to the same lamp then the lamp will be turned on after any of this switches is pressed and will remain its state even if any switch connected to this lamp is pressed afterwards.

    It is guaranteed that if you push all n switches then all m lamps will be turned on.

    Your think that you have too many switches and you would like to ignore one of them.

    Your task is to say if there exists such a switch that if you will ignore (not use) it but press all the other n - 1 switches then all the m lamps will be turned on.

    Input

    The first line of the input contains two integers n and m (1 ≤ n, m ≤ 2000) — the number of the switches and the number of the lamps.

    The following n lines contain m characters each. The character ai, j is equal to '1' if the i-th switch turns on the j-th lamp and '0' otherwise.

    It is guaranteed that if you press all n switches all m lamps will be turned on.

    Output

    Print "YES" if there is a switch that if you will ignore it and press all the other n - 1 switches then all m lamps will be turned on. Print "NO" if there is no such switch.

    Examples
    input
    Copy
    4 5
    10101
    01000
    00111
    10000
    output
    Copy
    YES
    input
    Copy
    4 5
    10100
    01000
    00110
    00101
    output
    Copy
    NO 

    题意: 给你n*m盏灯,i行j列1代表i可以控制灯j的开关,0代表不可以,问是否可以去掉一行剩余的灯还是可以亮着。如果可以输出YES,不可以输出NO

    遍历每一行,如果去掉哪行时剩余的每列有一列和不为0,那么证明可以去掉该行,输出YES
    #include <map>
    #include <set>
    #include <cmath>
    #include <queue>
    #include <cstdio>
    #include <vector>
    #include <string>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define debug(a) cout << #a << " " << a << endl
    using namespace std;
    const int maxn = 2*1e3 + 10;
    const int mod = 1e9 + 7;
    typedef long long ll;
    char mapn[maxn][maxn];
    ll sum[maxn];
    int main(){
        std::ios::sync_with_stdio(false);
        ll n, m;
        while( cin >> n >> m ) {
            memset( sum, 0, sizeof(sum) );
            for( ll i = 0; i < n; i ++ ) {
                for( ll j = 0; j < m; j ++ ) {
                    cin >> mapn[i][j];
                    sum[j] += mapn[i][j] - '0';
                }
            }
            bool flg = false;
            for( ll i = 0; i < n; i ++ ) {
                bool flag = true;
                for( ll j = 0; j < m; j ++ ) {
                    if( sum[j] - ( mapn[i][j] - '0' ) == 0 ) {
                        flag = false;
                        break;
                    }
                }
                if( flag ) {
                    cout << "YES" << endl;
                    flg = true;
                    break;
                }
            }
            if( !flg ) {
                cout << "NO" << endl;
            }
        }
        return 0;
    }
    彼时当年少,莫负好时光。
  • 相关阅读:
    Java 面向对象异常处理,finally,覆盖时异常特点,package,import,包之间的访问(10)
    Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)
    Java 面向对象概述原理: 多态、Object类,转型(8)
    Java 接口interface(7)
    Java 继承(extends)、抽象类(abstract)的特点用法原理(7)
    Java final 关键字的用法以及原理(7)
    df-V-du
    Arch-pacman-Tips-And-Tricks
    pacman-help
    Python-Version
  • 原文地址:https://www.cnblogs.com/l609929321/p/9234067.html
Copyright © 2020-2023  润新知