zoukankan      html  css  js  c++  java
  • 1063 Set Similarity (25 分)

    1063 Set Similarity (25 分)

    Given two sets of integers, the similarity of the sets is defined to be Nc​​/Nt​​×100%, where Nc​​ is the number of distinct common numbers shared by the two sets, and Nt​​ is the total number of distinct numbers in the two sets. Your job is to calculate the similarity of any given pair of sets.

    Input Specification:

    Each input file contains one test case. Each case first gives a positive integer N (50) which is the total number of sets. Then N lines follow, each gives a set with a positive M (104​​) and followed by M integers in the range [0,109​​]. After the input of sets, a positive integer K (2000) is given, followed by K lines of queries. Each query gives a pair of set numbers (the sets are numbered from 1 to N). All the numbers in a line are separated by a space.

    Output Specification:

    For each query, print in one line the similarity of the sets, in the percentage form accurate up to 1 decimal place.

    Sample Input:

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

    Sample Output:

    50.0%
    33.3%
    思路
      使用set即可

    #include<iostream>
    #include<vector>
    #include<algorithm>
    #include<queue>
    #include<string>
    #include<map>
    #include<set>
    #include<stack>
    #include<string.h>
    #include<cstdio>
    #include <unordered_map>
    #include<cmath>
    
    using namespace std;
    
    int main()
    {
        int n;
        scanf("%d",&n);
        set<int>s[n+1];
        int num;
        for(int i=1;i<n+1;i++)
        {
            scanf("%d",&num);
            for(int j=0;j<num;j++)
            {
                int temp;
                scanf("%d",&temp);
                s[i].insert(temp);
            }
        }
        int k;
        scanf("%d",&k);
        for(int i=0;i<k;i++)
        {
            int a,b;
            scanf("%d%d",&a,&b);
            set<int> result;
            set_intersection(s[a].begin(),s[a].end(),s[b].begin(),s[b].end(),inserter(result,result.begin()));
            int nc=result.size();
            int nt=s[a].size()+s[b].size()-nc;
           // cout<<nc<<" "<<nt<<endl;
            printf("%.1f\%
    ",nc*100.0/nt);
        }
        return 0;
    }
     
  • 相关阅读:
    递延收益为什么属于负债类科目
    java 环境变量脚本
    dotnet 执行命令常用代码
    centos安装nuget
    centos 安装nodejs redis
    linux git 记住密码
    libgit2-6311e88: cannot open shared object file: No such file or directory
    angular ng build 报错 Cannot read property 'default' of undefined
    java ObjectMapper json 与对象的相互转换
    java 流不能复用 stream has already been operated upon or closed 内存分页
  • 原文地址:https://www.cnblogs.com/zhanghaijie/p/10327800.html
Copyright © 2011-2022 走看看