7-9 集合相似度 (25 分)(交集/并集)

简介: 7-9 集合相似度 (25 分)(交集/并集)

7-9 集合相似度 (25 分)


给定两个整数集合,它们的相似度定义为:Nc/Nt×100%。其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。


输入格式:


输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤104),是集合中元素的个数;然后跟M个[0,109]区间内的整数。


之后一行给出一个正整数K(≤2000),随后K行,每行对应一对需要计算相似度的集合的编号(集合从1到N编号)。数字间以空格分隔。


输出格式:


对每一对需要计算的集合,在一行中输出它们的相似度,为保留小数点后2位的百分比数字。


输入样例:


1. 3
2. 3 99 87 101
3. 4 87 101 5 87
4. 7 99 101 18 5 135 18 99
5. 2
6. 1 2
7. 1 3


输出样例:


50.00%
33.33%


#include<iostream>
#include<set>
using namespace std;
const int N = 60;
set<int>s[N];
int n, m, x, k, a, b;
int nc, nt;
int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> m;
        for (int j = 0; j < m; j++) {
            cin >> x;
            s[i].insert(x);
        }
    }
    cin >> k;
    for (int i = 0; i < k; i++) {
        cin >> a >> b, nc = 0;
        set<int>::iterator it;
        for (it = s[b].begin();it != s[b].end(); it++) {
            if (s[a].find(*it) != s[a].end()) nc++;
        } 
        nt = s[a].size() + s[b].size() -nc;
        printf("%.2lf%%\n", nc * 100.0 / nt );
    }
    return 0;
}
目录
相关文章
|
2月前
|
机器学习/深度学习 算法 测试技术
【状态压缩 并集查找 图论】2157. 字符串分组
【状态压缩 并集查找 图论】2157. 字符串分组
【状态压缩 并集查找 图论】2157. 字符串分组
|
10月前
|
Python
集合的交集、并集和差集
集合的交集、并集和差集
|
12月前
L2-005 集合相似度 (25 分)(set+容斥)
L2-005 集合相似度 (25 分)(set+容斥)
41 0
L2-005 集合相似度 (25 分)(set+容斥)
|
11月前
|
Java
一篇文章教你学会:对Java集合进行并集,交集,差集运算
一篇文章教你学会:对Java集合进行并集,交集,差集运算
303 0
|
11月前
2023-4-6-C++Vector求交集并集和差集(去除冗余数)
2023-4-6-C++Vector求交集并集和差集(去除冗余数)
63 0
两个数组的并集、交集
两个数组的并集、交集
|
存储 安全 Java
Java常用集合的总结,集合中的(交集,并集,差集,补集,对称差集)
Java常用集合的总结,集合中的(交集,并集,差集,补集,对称差集)
374 0
Java常用集合的总结,集合中的(交集,并集,差集,补集,对称差集)
|
C++ Windows 容器
L2-005 集合相似度 (25 分)(set集合)
L2-005 集合相似度 (25 分)(set集合)
78 0
|
自然语言处理 Python
Python编程:通过交集并集计算文档相似度
Python编程:通过交集并集计算文档相似度
|
Windows
7-9 集合相似度
7-9 集合相似度 给定两个整数集合,它们的相似度定义为:N ​c ​​ /N ​t ​​ ×100%。其中N ​c ​​ 是两个集合都有的不相等整数的个数,N ​t ​​ 是两个集合一共有的不相
155 0

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    25
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    26
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    25
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    27
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    23
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    30
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    21
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    19
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    19
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    19