题解 | 隐匿社交网络

隐匿社交网络

https://www.nowcoder.com/practice/2870f9db6aeb4eb08fbd6460397f9bf4

按位与操作,同时是 1 才会是 1,数据两两做与操作会超时。
所以可以先考虑吧每个数转为其二进制形式存储起来,一个数的二进制形式存一行,n个数,总共n行。时间复杂度为:nlogn
遍历每一列,把是 1 的每一行下标用并查集合并,因为它们做与操作结果会大于等于 1
并查集,p[N], si[N],p 维护集合,si 维护集合中的个数。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+6;
int ejz[N][1000];
long long arr[N];
int T;
int p[N],si[N];
int find(int a){
    if(p[a]!=a){
        int pa=find(p[a]);
        p[a]=pa;
    }
    return p[a];
}
void merge(int a,int b){
    int pa=find(a),pb=find(b);
    if(pa!=pb){
        p[pa]=pb;
        si[pb]+=si[pa];
    }
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    cin>>T;
    while(T--){
        int n,ma_idx=0;
        cin>>n;
        for(int i=0;i<n;i++){
            fill(ejz[i],ejz[i]+1000,0);
        }
        for(int i=0;i<n;i++){
            cin>>arr[i];
            long long x=arr[i];
            int idx=0;
            while(x){
                ejz[i][idx]=x%2;
                idx++;
                x/=2;
            }
            ma_idx=max(ma_idx,idx);
        }
        for(int i=0;i<n;i++){
            p[i]=i, si[i]=1;
        }
        for(int i=0;i<ma_idx;i++){
            int j=0;
            while(j<n && ejz[j][i]==0) j++;
            // j=find(j);
            for(int k=j+1;k<n;k++){
                if(ejz[k][i]==1){
                    merge(k,j);
                }
            }
        }
        // for(int i=0;i<n;i++){
        //     cout<<p[i]<<" ";
        // }
        // cout<<endl;
        int ans=1;
        for(int i=0;i<n;i++){
            ans=max(ans,si[i]);
        }
        cout<<ans<<endl;
    }
    return 0;
}

全部评论

相关推荐

我是没经验的毕业生,这啥情况啊会不会是hr在刷kpi
JamesGosli...:字节boss属于是群发了,我都快入职字节了,其他部门还在和我boss打招呼
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利&nbsp;有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的&nbsp;真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
面试尴尬现场
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务