PAT甲题题解-1063. Set Similarity (25)-set的使用
题意:
两个整数集合,它们的相似度定义为:nc/nt*100%
nc为两个集合都有的整数
nt为两个集合一共有的整数
注意这里的整数都是各不相同的,即重复的不考虑在内。
给出n个整数集合,和k个询问,让你输出每个询问中两个集合的相似度。
因为数值范围在[0,10^9],开不了这么大的数组来标记某个数的出现,所以一开始用了map
然而最后一个样例超时了
因为题目说了不包含重复的元素,所以想到用set来存储
set的大小即为集合不相同的整数个数
那么寻找a和b集合相同的元素个数,只需要遍历一下a集合的元素,看是否能在b集合中找到即可
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
#include <map>
#include <set>
using namespace std;
const int maxn=*+;
set<int> sets[];
int n;
int m[];
int dif[];//dif[i]为第i个集合不同的元素个数
double ans[][];
/**
把所有集合对的相似度先求出来,之后询问的时候直接访问即可
*/
void solve(int n){
int val;
for(int i=;i<=n;i++){
for(int j=i+;j<=n;j++){
int same=;
set<int>::iterator it,findit;
for(it=sets[i].begin();it!=sets[i].end();it++){
val=*it;
findit=sets[j].find(val);
if(findit!=sets[j].end())
same++;
}
ans[i][j]=ans[j][i]=same*1.0/(dif[i]+dif[j]-same);
}
}
} int main()
{
scanf("%d",&n);
int val;
memset(dif,,sizeof(dif));
for(int i=;i<=n;i++){
scanf("%d",&m[i]);
for(int j=;j<m[i];j++){
scanf("%d",&val);
sets[i].insert(val);
}
dif[i]=sets[i].size();
}
solve(n);
int k;
int a,b;
scanf("%d",&k);
for(int i=;i<k;i++){
scanf("%d %d",&a,&b);
printf("%.1lf%%\n",ans[a][b]*);
}
return ;
}
PAT甲题题解-1063. Set Similarity (25)-set的使用的更多相关文章
- PAT甲题题解-1051. Pop Sequence (25)-堆栈
将1~n压入最多为m元素的栈 给出k个出栈序列,问你是否能够实现. 能输出YES 否则NO 模拟一遍即可,水题. #include <iostream> #include <cstd ...
- PAT甲题题解-1059. Prime Factors (25)-素数筛选法
用素数筛选法即可. 范围long int,其实大小范围和int一样,一开始以为是指long long,想这就麻烦了该怎么弄. 而现在其实就是int的范围,那难度档次就不一样了,瞬间变成水题一枚,因为i ...
- PAT甲题题解-1101. Quick Sort (25)-大水题
快速排序有一个特点,就是在排序过程中,我们会从序列找一个pivot,它前面的都小于它,它后面的都大于它.题目给你n个数的序列,让你找出适合这个序列的pivot有多少个并且输出来. 大水题,正循环和倒着 ...
- PAT甲题题解-1117. Eddington Number(25)-(大么个大水题~)
如题,大水题...贴个代码完事,就这么任性~~ #include <iostream> #include <cstdio> #include <algorithm> ...
- PAT甲题题解-1130. Infix Expression (25)-中序遍历
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789828.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1129. Recommendation System (25)-排序
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789819.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1016. Phone Bills (25)-模拟、排序
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789229.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1021. Deepest Root (25)-dfs+并查集
dfs求最大层数并查集求连通个数 #include <iostream> #include <cstdio> #include <algorithm> #inclu ...
- PAT甲题题解-1024. Palindromic Number (25)-大数运算
大数据加法给一个数num和最大迭代数k每次num=num+num的倒序,判断此时的num是否是回文数字,是则输出此时的数字和迭代次数如果k次结束还没找到回文数字,输出此时的数字和k 如果num一开始是 ...
随机推荐
- PyQt5--QFileDiaglog
# -*- coding:utf-8 -*- ''' Created on Sep 17, 2018 @author: SaShuangYiBing Comment: ''' import sys f ...
- PyQt5--Buttons
# -*- coding:utf-8 -*- ''' Created on Sep 13, 2018 @author: SaShuangYiBing ''' import sys from PyQt5 ...
- JSONP跨域和CORS跨域
什么是跨域? 跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器的安全限制! 同源策略 同源策略:域名.协议.端口均相同. 浏览器执行JavaScript脚本时,会检查这 ...
- WorldWind源码剖析系列:视景体类Frustum
PluginSDK中的视景体类Frustum是三维计算机图形学中的概念,主要用来描述透视投影的过程.三维计算机图形学中关于三维物体的渲染,Direct3D和OpenGL都是先通过对现实世界中的场景先进 ...
- leetcode 26—Remove Duplicates from Sorted Array
Given a sorted array nums, remove the duplicates in-place such that each element appear only once an ...
- Python2.7-stat
stat模块,用于解释 os.stat(),os.lstat(),os.fstat() 返回的结果,定义了许多表示文件或路径的各个状态的常数和测试各个状态的函数具体参考 官方文档 和 http://w ...
- 关于CAN总线的被动错误标志的问题?
关于CAN总线的被动错误标志的问题? 关于CAN总线的被动错误标志,协议中的描述是"处于被动错误状态的单元检测出错误时,输出被动错误标志". 对此有几个疑问: 1.被动错误标志的发 ...
- odoo之自动生成编号问题
单独的seq.xml文件 <?xml version="1.0" encoding="utf-8"?><openerp> <dat ...
- android学习---Gallery画廊视图
Gallery与Spinner有共同父类:AbsPinner.说明Gallery与Spinner都是一个列表框. 它们之间的差别在于Spinner显示的是一个垂直的列表选择框,而Gallery显示的是 ...
- 使用php分页类实现简单分类
分页类參考地址:http://blog.csdn.net/buyingfei8888/article/details/40260127 just soso. 实现分页主要分为4步: 1 引入分页类 2 ...