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

    Given two sets of integers, the similarity of the sets is defined to be /, 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 (≤) which is the total number of sets. Then N lines follow, each gives a set with a positive M (≤) and followed by M integers in the range [0]. After the input of sets, a positive integer K (≤) 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%
     
     思路:挺麻烦的一个题,充分利用了vector和set,
    注意:
    利用map给第一行数据打标记,然后再去遍历第二行数据判断是否为交集元素,这样子只是将两行数据都只遍历了一遍,会超时
    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1010;
    #define eps 1e-8
    #define  inf  0x3fffffff
    vector<set<int> > ve;
    int main(){
        int n,m;
        scanf("%d",&n);
        ve.resize(n);
        int temp;
        for(int i=0;i<n;i++){
            scanf("%d",&m);
            for(int j=0;j<m;j++){
                scanf("%d",&temp);
                ve[i].insert(temp);
            }
        }
        int k,a,b;
        scanf("%d",&k);
        for(int i=0;i<k;i++){
            set<int> s,st;
            scanf("%d %d",&a,&b);
            int sum=ve[a-1].size()+ve[b-1].size();
            for(set<int>::iterator it=ve[a-1].begin();it!=ve[a-1].end();it++){
                if(ve[b-1].find(*it)!=ve[b-1].end()){
                    st.insert(*it);
                }
            }
            
            printf("%.1f%
    ",st.size()*100.0/(sum-st.size()));
        }
        return 0;
    }
  • 相关阅读:
    Java-死锁
    Java使用Redis
    MySQL如何开启慢查询
    VGG
    如何使用Soft-NMS实现目标检测并提升准确率
    非极大值抑制(NMS)
    迁移学习与fine-tuning有什么区别
    Keras-在预训练好网络模型上进行fine-tune
    Kotlin——初级篇(六):空类型、空安全、非空断言、类型转换等特性总结
    Kotlin——初级篇(五):操作符与操作符重载一
  • 原文地址:https://www.cnblogs.com/dreamzj/p/14947858.html
Copyright © 2011-2022 走看看