题意:
两个整数集合,它们的相似度定义为: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的使用的更多相关文章

  1. PAT甲题题解-1051. Pop Sequence (25)-堆栈

    将1~n压入最多为m元素的栈 给出k个出栈序列,问你是否能够实现. 能输出YES 否则NO 模拟一遍即可,水题. #include <iostream> #include <cstd ...

  2. PAT甲题题解-1059. Prime Factors (25)-素数筛选法

    用素数筛选法即可. 范围long int,其实大小范围和int一样,一开始以为是指long long,想这就麻烦了该怎么弄. 而现在其实就是int的范围,那难度档次就不一样了,瞬间变成水题一枚,因为i ...

  3. PAT甲题题解-1101. Quick Sort (25)-大水题

    快速排序有一个特点,就是在排序过程中,我们会从序列找一个pivot,它前面的都小于它,它后面的都大于它.题目给你n个数的序列,让你找出适合这个序列的pivot有多少个并且输出来. 大水题,正循环和倒着 ...

  4. PAT甲题题解-1117. Eddington Number(25)-(大么个大水题~)

    如题,大水题...贴个代码完事,就这么任性~~ #include <iostream> #include <cstdio> #include <algorithm> ...

  5. PAT甲题题解-1130. Infix Expression (25)-中序遍历

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789828.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  6. PAT甲题题解-1129. Recommendation System (25)-排序

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789819.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  7. PAT甲题题解-1016. Phone Bills (25)-模拟、排序

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789229.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  8. PAT甲题题解-1021. Deepest Root (25)-dfs+并查集

    dfs求最大层数并查集求连通个数 #include <iostream> #include <cstdio> #include <algorithm> #inclu ...

  9. PAT甲题题解-1024. Palindromic Number (25)-大数运算

    大数据加法给一个数num和最大迭代数k每次num=num+num的倒序,判断此时的num是否是回文数字,是则输出此时的数字和迭代次数如果k次结束还没找到回文数字,输出此时的数字和k 如果num一开始是 ...

随机推荐

  1. beta冲刺————第一天(1/5)

    人员的再次分配: 调走人员:陈裕鹏(原来在本队伍主要进行文章推荐算法的设计) 调入人员:陈邡(原Dipper团队,负责游戏内容的策划案,以及做一些后端的探索工作.) 现队员工作划分: 王国华,吴君毅, ...

  2. 阿里八八Alpha阶段Scrum(6/12)

    今日进度 叶文滔: 修复了无法正确判断拖曳与点击的BUG,并且成功连接添加界面. 会议内容 会议照片 明日安排 叶文滔: 继续完善按钮功能 王国超: 继续攻克日程界面显示存在的BUG 俞鋆: 继续进行 ...

  3. Python高级网络编程系列之基础篇

    一.Socket简介 1.不同电脑上的进程如何通信? 进程间通信的首要问题是如何找到目标进程,也就是操作系统是如何唯一标识一个进程的! 在一台电脑上是只通过进程号PID,但在网络中是行不通的,因为每台 ...

  4. vagrant特性——基于docker开发环境(docker和vagrant的结合)-2-命令

    Docker Commands Docker provider公开了一些额外的vagrant命令,这些命令对于与Docker容器交互非常有用.这有助于你在vagrant之上的工作流程,这样你就可以在底 ...

  5. mysql刚启动就停止是什么原因

    1.找到mysql安装目录,将其配置文件my.default.ini改名为my.ini,并且将my.ini移至bin目录下. 2.启动命令行,将目录切换到mysql安装目录的bin目录下.3.接下来, ...

  6. docker镜像的创建方法docker file方式

    什么是docker file文件? 简单来说,docker file文件就是一个命令文本集合,容来记录创建docker镜像的步骤 快速入门: 1.新建一个docker file文件dockerfile ...

  7. easyui validatebox textbox 使用例子

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFormTextbox ...

  8. 树莓派学习笔记(4):利用yeelink实现在线硬件状态监控

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 一.实验目的 本文实验目的是定时获取树莓派CPU的温度.占用率及内存占用率,并其结果上传到yeelink网站,实现在 ...

  9. 人人都是产品经理<1.0>

    用了大概2个月的时间,细细的读完了<人人都是产品经理>这本书,受益良多,期间也做了一些笔记,都在前面的博客————products系列中... 当然,更多的收获,还是沉滞在书中的注释,以及 ...

  10. iOS11 Xcode 9 按住command 单击 恢复到从前(直接跳转到定义)

    iOS11 Xcode 9  按住command 单击 恢复到从前(直接跳转到定义)   2017年9月20日,苹果如期推送 Xcode 9 和 iOS 11的更新. Xcode 9正式版与之前bet ...