侧边栏
首页代码

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);
    }
}
posted @ 2021-04-22 23:01  AlexStraightUp  阅读(49)  评论(0)    收藏  举报
页脚HTML代码