PAT 1063 Set Similarity(set应用 交集与并集)

  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 (≤10​4​​) and followed by M integers in the range [0,10​9​​]. 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%

  题意:给你N组数据,共有K次询问,每次询问给出一对数 x,y 意思是在数组x与数组y中求出 N​c​​/N​t​​×100% ,Nc表示数组x,y中元素  的交集,Nt表示数组x,y中元素的并集

 思路:STL 中set容器有三种函数能满足题目要求

         1.set_union(取两集合并集)

         2.set_intersection(取两集合交集)

         3.set_difference(取两集合差集)

代码

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<set>
using namespace std;
const int Max=1e4+5;
int main()
{
    int N,M,Q,x,y,Nc,Nt;
    scanf("%d",&N);
    set<int> *S=new set<int>[N+1];
    for(int i=1;i<=N;i++)
    {
        scanf("%d",&M);
        while(M--)
        {
            scanf("%d",&x);
            S[i].insert(x);
        }
    }
    scanf("%d",&Q);
    set<int> ans;
    while(Q--)
    {
        scanf("%d %d",&x,&y);
        set_intersection(S[x].begin(),S[x].end(),S[y].begin(),S[y].end(),inserter(ans,ans.begin()));
        Nc=ans.size();
        Nt=S[x].size()+S[y].size()-Nc;
        ans.clear();
        printf("%.1lf%%\n",100*(1.0*Nc/Nt));
    }
    return 0;
}

 

猜你喜欢

转载自blog.csdn.net/ZCMU_2024/article/details/84994545