Cowpatibility

Cowpatibility
题面

题意
有n头奶牛,每一头奶牛喜欢5种口味,如果有两头奶牛5中口味各不相同的话,我们就说这两头奶牛是不相似。问有多少队奶牛不相似呢?
分析
这题N的范围是5e4,明显二重循环是tle,所以暴力模拟是肯定行不通的,那我们就需要换一种思路。
需要用到map数据结构以及bitset
注意:使用sring对象初始化bitset对象的时候,string对象直接表示为位模式。所以从string对象读入位集的顺序是从右向左
把n头牛的口味全部用二进制来储存,然后利用容斥原理来求解

AC代码

#include<bits/stdc++.h>
using namespace std;
int a[50005][7];
long long ans=0;
const int N=50005;
map<int,bitset<N> >m;
int main(){
int n;
bitset<N> p;
cin>>n;
for(int i=1;i<=n;i++){
    for(int j=1;j<=5;j++){
       cin>>a[i][j];
       m[a[i][j]].set(i);
    }
}
for(int i=1;i<=n;i++){
    p.reset();
    for(int j=1;j<=5;j++){
        p|=m[a[i][j]];
    }
    ans=ans+n-p.count();
}
cout<<(ans/2)<<endl;
return 0;
}

全部评论

相关推荐

后端转测开第一人:再怎么劝退也没用的 某些群体总以为在一个幸存者偏差的软件上看见了极少数秋招上岸某个大厂的个例就幻想上了 事实上自己打开ssob沟通1000+连个小厂面试都没
点赞 评论 收藏
分享
10-01 09:50
门头沟学院 Java
肖先生~:这个人真的很好,点赞
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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