• L2-005 集合相似度


    给定两个整数集合,它们的相似度定义为:/。其中Nc​​是两个集合都有的不相等整数的个数,Nt​​是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。

    输入格式:

    输入第一行给出一个正整数N(≤),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤),是集合中元素的个数;然后跟M个[区间内的整数。

    之后一行给出一个正整数K(≤),随后K行,每行对应一对需要计算相似度的集合的编号(集合从1到N编号)。数字间以空格分隔。

    输出格式:

    对每一对需要计算的集合,在一行中输出它们的相似度,为保留小数点后2位的百分比数字。

    输入样例:

    3
    3 99 87 101
    4 87 101 5 87
    7 99 101 18 5 135 18 99
    2
    1 2
    1 3
    

    输出样例:

    50.00%
    33.33%


    一开始是另开一个set<int>ans 来判断两个集合的补集 最后一个点超时了

    其实只遍历一次即可 见代码:
    #include<bits/stdc++.h>
    using namespace std;
    //input by bxd
    #define rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define repp(i,a,b) for(int i=(a);i>=(b);i--)
    #define RI(n) scanf("%d",&(n))
    #define RII(n,m) scanf("%d%d",&n,&m)
    #define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
    #define RS(s) scanf("%s",s);
    #define LL long long
    #define pb push_back
    #define fi first
    #define REP(i,N)  for(int i=0;i<(N);i++)
    #define CLR(A,v)  memset(A,v,sizeof A)
    //////////////////////////////////
    #define inf 0x3f3f3f3f
    #define N 50+5
    int main()
    {
        set<int>s[N];
        int n;
        int num[N];
        RI(n);
        rep(i,1,n)
        {
            int q;RI(q);
            while(q--)
            {
                LL x;scanf("%d",&x);
                s[i].insert(x);
            }
        }
        int q;
        RI(q);
        while(q--)
        {
            int a,b;
            RII(a,b);
            int cnta=s[a].size();
            int cntb=s[b].size();
            set<int> :: iterator it;
            int cnt=0;
    
           for(it=s[a].begin();it!=s[a].end();it++)
                if(s[b].find(*it)!=s[b].end())
                    cnt++;
    
            double ans1=(double)(cnt)/(cnta+cntb-cnt);
            ans1*=100;
            printf("%.2lf%%
    ",ans1);
        }
    }
    View Code





  • 相关阅读:
    POJ3041Asteroids(最小点覆盖+有点小抽象)
    POJ 2240Arbitrage(Floyd)
    POJ1860Currency Exchange(Bellman + 正权回路)
    POJ3259Wormholes(判断是否存在负回路)
    TCL V7300A-3D升级教程
    “一生所爱“一首一听就很想落泪的歌曲
    一生所爱 怀念那段旧时光~
    文艺小青年
    又是一年中秋节
    luogu1080 国王游戏(贪心+高精度)
  • 原文地址:https://www.cnblogs.com/bxd123/p/10565165.html
Copyright © 2020-2023  润新知