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

  • 相关阅读:
    Android Studio安装与配置
    T-SQL:qualify和window 使用(十七)
    《c#图解教程》
    c# 创建,加载,修改XML文档
    c# 使用迭代器来创建可枚举类型
    C#上手练习3(while、do while语句)(添加机器人聊天)
    C#上手练习2(FOR语句)
    C#上手练习1(if语句、Swich语句)
    解决java导入project出现红叉
    ABAP ALV显示前排序合并及布局显示
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/12603802.html
Copyright © 2011-2022 走看看