zoukankan      html  css  js  c++  java
  • 【SRM 717 div2 A】 NiceTable

    Problem Statement

    You are given a vector t that describes a rectangular table of zeroes and ones. Each character in t is either ‘0’ or ‘1’.
    We say that a table is nice if there are two sequences x, y of zeroes and ones such that for each valid pair of indices i, j we have t[i][j] = x[i] xor y[j].
    Some technical remarks:
    The number of elements in x should be equal to the number of rows of the table, i.e., the number of elements in t.
    The number of elements in y should be equal to the number of columns of the table, i.e., the length of each string in t.
    The operation xor (exclusive or) is defined as follows: 0 xor 0 = 0, 1 xor 1 = 0, 0 xor 1 = 1, and 1 xor 0 = 1.
    Verify whether the given table is nice. Return “Nice” if it is nice and “Not nice” otherwise. Note that the return value is case-sensitive.
    Definition

    Class:
    NiceTable
    Method:
    isNice
    Parameters:
    vector
    Returns:
    string
    Method signature:
    string isNice(vector t)
    (be sure your method is public)
    Limits

    Time limit (s):
    2.000
    Memory limit (MB):
    512
    Stack limit (MB):
    512
    Constraints

    t will contain between 1 and 5 elements, inclusive.

    Each element of t will contain between 1 and 5 characters, inclusive.

    All elements of t will contain the same number of characters.

    Each element of t will consist only of characters ‘0’ and ‘1’.
    Examples
    0)

    {“01”,
    “10”}
    Returns: “Nice”
    One valid choice is to choose x = y = {1, 0}.
    1)

    {“01”,
    “11”}
    Returns: “Not nice”
    Assume that t is nice. The sequences x and y have to satisfy the following constraints:
    x[0] xor y[0] = 0
    x[0] xor y[1] = 1
    x[1] xor y[0] = 1
    x[1] xor y[1] = 1
    From the first constraint we see that x[0] = y[0]. From the second and the third constraint we can then derive that we must also have x[1] = y[1]. But then the fourth constraint is not satisfied, which is a contradiction. Therefore, this t is not nice.
    2)

    {“0100”,
    “1011”,
    “0100”}
    Returns: “Nice”
    Here, one valid choice is x = {1, 0, 1} and y = {1, 0, 1, 1}.
    3)

    {“11”,
    “10”,
    “11”,
    “11”,
    “11”}
    Returns: “Not nice”

    【题目链接】:

    【题意】

    给你一个n*m的矩阵a;
    然后问你是否存在一个长度为n的序列x和长度为m的序列y;
    使得s[i]^s[j]=a[i][j]对于所有的i,j皆成立;
    n,m<=5
    a[i][j]中只会出现0和1

    【题解】

    暴力枚举x,y的每一位是0还是1就好;

    【Number Of WA

    0

    【反思】

    一开始想错了,以为让x全都是0就好;
    后来想,或许可以让x的第一位是0,然后其他位先不定;

    【完整代码】

    #include <bits/stdc++.h>
    using namespace std;
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define LL long long
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    #define rep2(i,a,b) for (int i = a;i >= b;i--)
    
    typedef pair<int,int> pii;
    typedef pair<LL,LL> pll;
    
    const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
    const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
    const double pi = acos(-1.0);
    const int N = 110;
    //head
    
    int x[8],y[8],hang,lie,ok;
    vector <string> a;
    
    void dfs2(int now){
        if (now > lie-1){
            int temp = 1;
            rep1(i,0,hang-1){
                rep1(j,0,lie-1){
                    int k = a[i][j]-'0';
                    if (k!=(x[i]^y[j]))
                        temp = 0;
                }
            }
            if (temp) ok = 1;
            return;
        }
        y[now] = 0;
        dfs2(now+1);
        y[now] = 1;
        dfs2(now+1);
    }
    
    void dfs1(int now){
        if (now > hang-1){
            dfs2(0);
            return;
        }
        x[now] = 0;
        dfs1(now+1);
        x[now] = 1;
        dfs1(now+1);
    }
    
    class NiceTable
    {
        public:
            string isNice(vector <string> t)
            {
                a = t;
                hang = t.size(),lie = t[0].size();
                ok = 0;
                dfs1(0);
                if (ok)
                    return "Nice";
                else
                    return "Not nice";
            }
    };
  • 相关阅读:
    20162320刘先润大二 实验三 查找与排序
    20162320刘先润大二第9周学习总结
    20162320大二第8周学习总结
    20162320刘先润大二 实验二
    20162321王彪 2016-2017-2《程序设计与数据结构》课程总结
    实验五 数据结构综合应用
    20162321-王彪-实验四总结
    王彪-20162321《程序设计与数据结构2nd》-第十一周学习总结与实验报告
    王彪-20162321-Java程序设计与数据结构2nd-第十周学习总结
    实验三-总结博客
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626230.html
Copyright © 2011-2022 走看看