L2-005 集合相似度 (25 分)
题目大意
给两个集合 求两个集合 交集size/并集size
思路
用”集合数组“存集合,用find函数看两个有几个相同的元素cnt,两个集合的size加起来减去cnt即为分母 分子为cnt
代码
#include<bits/stdc++.h>
using namespace std;
set<int> s[500];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
for(int j = 0;j<x;j++)
{
int a;
cin>>a;
s[i].insert(a);
}
}
int T;
cin>>T;
while(T--)
{
int p,q;
cin>>p>>q;
int cnt=0;
for(auto it:s[p-1])
{
if(s[q-1].find(it) != s[q-1].end())
cnt++;
}
//printf("%d\n",cnt);
double ans=cnt/ (0.0+s[q-1].size()+s[p-1].size()-cnt);
printf("%.2f%\n",ans*100.0);
}
}

浙公网安备 33010602011771号