【1063】Set Similarity (25 分)

简介: 【1063】Set Similarity (25 分)【1063】Set Similarity (25 分)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>  
#include<map>
#include<vector>
#include<queue> 
#include<set>
using namespace std; 
//用set去重,查看x集合某元素在y集合中是否出现
//用if   st[y].find(*it) !=st[y].end,如果能fine得到会返回对应值的迭代器
const int N=51;
set<int> st[N];  //N个集合
void compare(int x,int y){ //比较集合st[x]与集合st[y]
  int totalNum=st[y].size(),sameNum=0; //不同数的个数、相同数的个数
  //遍历集合st[x]
  for(set<int>::iterator it=st[x].begin(); it != st[x].end(); it++){
    if(st[y].find(*it) != st[y].end())  sameNum++; //在st[y]中能找到该元素
    else totalNum++;  //在st[y]中不能找到该元素
  }
  printf("%.1f%%\n",sameNum*100.0 /totalNum); //输出比率
}
int main(){   
  int n,k,q,v,st1,st2;
  scanf("%d",&n);  //集合个数
  for(int i=1;i<=n;i++){
    scanf("%d",&k); //集合i中的元素个数
    for(int j=0;j<k;j++){
      scanf("%d",&v);  //集合i中的元素v
      st[i].insert(v); //将元素v加入集合st[i]中
    }
  }
  scanf("%d",&q);  //q个查询
  for(int i=0;i<q;i++){ 
    scanf("%d%d",&st1,&st2);  //欲对比的集合编号
    compare(st1,st2);  //比较两个集合
  }
  system("pause"); 
    return 0;   
}
相关文章
|
C++ Windows 容器
【PAT甲级 - C++题解】1063 Set Similarity
【PAT甲级 - C++题解】1063 Set Similarity
60 0
|
1月前
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
64 18
你对Collection中Set、List、Map理解?
|
1月前
|
存储 缓存 安全
只会“有序无序”?面试官嫌弃的List、Set、Map回答!
小米,一位热衷于技术分享的程序员,通过与朋友小林的对话,详细解析了Java面试中常见的List、Set、Map三者之间的区别,不仅涵盖了它们的基本特性,还深入探讨了各自的实现原理及应用场景,帮助面试者更好地准备相关问题。
60 20
|
2月前
|
存储 C++ 容器
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
37 3
【C++】map、set基本用法
|
2月前
|
存储 算法 C++
【C++】unordered_map(set)
C++中的`unordered`容器(如`std::unordered_set`、`std::unordered_map`)基于哈希表实现,提供高效的查找、插入和删除操作。哈希表通过哈希函数将元素映射到特定的“桶”中,每个桶可存储一个或多个元素,以处理哈希冲突。主要组成部分包括哈希表、哈希函数、冲突处理机制、负载因子和再散列,以及迭代器。哈希函数用于计算元素的哈希值,冲突通过开链法解决,负载因子控制哈希表的扩展。迭代器支持遍历容器中的元素。`unordered_map`和`unordered_set`的插入、查找和删除操作在理想情况下时间复杂度为O(1),但在冲突较多时可能退化为O(n)。
29 5
|
4月前
|
存储 Java API
【数据结构】map&set详解
本文详细介绍了Java集合框架中的Set系列和Map系列集合。Set系列包括HashSet(哈希表实现,无序且元素唯一)、LinkedHashSet(保持插入顺序的HashSet)、TreeSet(红黑树实现,自动排序)。Map系列为双列集合,键值一一对应,键不可重复,值可重复。文章还介绍了HashMap、LinkedHashMap、TreeMap的具体实现与应用场景,并提供了面试题示例,如随机链表复制、宝石与石头、前K个高频单词等问题的解决方案。
55 6
【数据结构】map&set详解
|
3月前
|
存储 JavaScript 前端开发
Set、Map、WeakSet 和 WeakMap 的区别
在 JavaScript 中,Set 和 Map 用于存储唯一值和键值对,支持多种操作方法,如添加、删除和检查元素。WeakSet 和 WeakMap 则存储弱引用的对象,有助于防止内存泄漏,适合特定场景使用。
|
3月前
|
存储 缓存 Java
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
49 1
|
4月前
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
45 5
|
4月前
|
存储 JavaScript 前端开发
js的map和set |21
js的map和set |21