1 solutions

  • 0
    @ 2022-3-31 15:51:45

    简单的推理,极致的享受

    对于每个芯片,我们只需要统计其他芯片对这个芯片的测试结果, 因为有个线索是好的芯片一定比坏的芯片多,那么对于一个芯片我们统计其他的芯片的结果,这些其他芯片也一定满足好的芯片数量一定大于等于坏的芯片(原本是大于但现在少了一个所以可能出现等于的情况)。那就分两种情况。

    • 如果好的芯片是大于坏的芯片这种情况一定会出现1的数量大于0或者0的数量大于1,那么数量大的那个就是这个芯片的正确测试结果,因为好的芯片比坏的芯片多,好的芯片给出的结果都是一样的。
    • 如果对于一个芯片除了他以外的其他芯片,好的芯片和坏的芯片一样多,如果出现01数量不一样那就多的那一方是正确的,如果一样多那这个芯片一定是好的,因为数量一样多就说明好芯片和坏芯片数量一样多且好的芯片给出了一个结果其他所有坏芯片都给出了相反的结果,那如果这个芯片也是坏芯片那么总的坏芯片数量就比好芯片多一个那就违反一开始的设定好芯片大于坏芯片所以这个一定是好芯片。
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int a[25][25];
    int main(){
        int n;
        cin>>n;
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                cin>>a[i][j];
            }
        }
        for(int i=0;i<n;i++){
            int cou=0;
            for(int j=0;j<n;j++){
                if(i==j)continue;
                if(a[j][i])cou++;
                else cou--;
            }
            if(cou>=0)cout<<i+1<<' ';
        }
    
        return 0;
    }
    

    Information

    ID
    1179
    Time
    1000ms
    Memory
    512MiB
    Difficulty
    10
    Tags
    # Submissions
    5
    Accepted
    3
    Uploaded By