zoukankan      html  css  js  c++  java
  • PTA(Advanced Level)1063.Set Similarity

    Given two sets of integers, the similarity of the sets is defined to be N**c/N**t×100%, where N**c is the number of distinct common numbers shared by the two sets, and N**t 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%
    

    思路

    • 来说,题意就是求两个集合的交集的长度/两个集合的总长度。也就是求交集/并集,很自然地想到要用STL中的set容器

    代码

    #include<bits/stdc++.h>
    using namespace std;
    set<int> v[60];
    int main()
    {
    	int n;
    	scanf("%d", &n);
    
    	int cnt = 0;
    	int t;
    	for(int j=1;j<=n;j++)		//注意集合的下标是从1开始的
    	{
    		scanf("%d", &cnt);
    		for(int i=0;i<cnt;i++)
    		{
    			scanf("%d", &t);
    			v[j].insert(t);
    		}
    	}
    
    	int query;
    	scanf("%d", &query);
    	int a, b;
    	for(int i=0;i<query;i++)
    	{
    		scanf("%d %d", &a, &b);
    		int sum = v[b].size(), equals = 0;		//总数量初始化为b的大小
    		set<int>::iterator it;
    		for(it = v[a].begin(); it!=v[a].end();it++)
    		{
    			if(v[b].find(*it) != v[b].end())	//在b集合中找有无a的元素
    				equals++;
    			else	sum++;
    		}
    		printf("%.1f%%
    ", equals * 100.0 / sum);
    	}
    	return 0;
    }
    

    引用

    https://pintia.cn/problem-sets/994805342720868352/problems/994805409175420928

  • 相关阅读:
    转:专题五线程同步——事件构造
    转:专题四线程同步
    转:专题三线程池中的I/O线程
    转:[C# 开发技巧]如何防止程序多次运行
    转:专题二线程池中的工作者线程
    转:专题一线程基础
    C# 设置按钮快捷键
    jmeter链接多台负载机报错
    java读取properties
    使用Runtime.getRuntime().exec()方法的几个陷阱
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/12603802.html
Copyright © 2011-2022 走看看