• 1063 Set Similarity


    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%
    
    /*
        Name:
        Copyright:
        Author:  流照君
        Date: 2019/8/17 16:01:53
        Description:
    */
    #include <iostream>
    #include<string>
    #include <algorithm>
    #include <vector>
    #include<set> 
    #define inf 0x3f3f3f3f
    using namespace std;
    typedef long long ll;
    vector<set<int>> v;
    int main(int argc, char** argv)
    {
        //freopen("in.txt", "r", stdin);
        //freopen("out.txt", "w", stdout);
        int n,k,temp,q,a,b,nc,nt;
        cin>>n;
        vector<set<int>> v(n);
        for(int i=0;i<n;i++)
        {
        	cin>>k;
        	while(k--)
        	{
        		cin>>temp;
        		v[i].insert(temp); 
    		}
    	}
        cin>>q;
        while(q--)
        {
        	cin>>a>>b;
        	nt=v[b-1].size();
        	nc=0;
        	for(auto it=v[a-1].begin();it!=v[a-1].end();it++)
        	{
        		if(v[b-1].find(*it)==v[b-1].end()) //没找到 
        		nt++;
        		else
        		nc++;
    		}
    		printf("%.1f%
    ",double(nc)/nt*100);
    	}
        return 0;
    }
    

      

  • 相关阅读:
    一个十分诡异的NullReferenceException异常!
    如何去掉TabControl控件默认添加的TabPage
    GDI+发生一般性错误的解决方法
    C#中各种数组的性能比较
    酷享娱乐新生活
    关于ImageList.Images集合的特殊行为!
    WinForm窗体之间交互的一些方法
    实现单实例应用程序的三种方案
    MySql_Close 释放资源
    数组之List
  • 原文地址:https://www.cnblogs.com/liuzhaojun/p/11369052.html
Copyright © 2020-2023  润新知