博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
L2-005 集合相似度
阅读量:5077 次
发布时间:2019-06-12

本文共 1589 字,大约阅读时间需要 5 分钟。

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

输入格式:

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

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

输出格式:

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

输入样例:

33 99 87 1014 87 101 5 877 99 101 18 5 135 18 9921 21 3

输出样例:

50.00%33.33% 一开始是另开一个set
ans 来判断两个集合的补集 最后一个点超时了 其实只遍历一次即可 见代码:
#include
using namespace std;//input by bxd#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define repp(i,a,b) for(int i=(a);i>=(b);i--)#define RI(n) scanf("%d",&(n))#define RII(n,m) scanf("%d%d",&n,&m)#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)#define RS(s) scanf("%s",s);#define LL long long#define pb push_back#define fi first#define REP(i,N) for(int i=0;i<(N);i++)#define CLR(A,v) memset(A,v,sizeof A)//#define inf 0x3f3f3f3f#define N 50+5int main(){ set
s[N]; int n; int num[N]; RI(n); rep(i,1,n) { int q;RI(q); while(q--) { LL x;scanf("%d",&x); s[i].insert(x); } } int q; RI(q); while(q--) { int a,b; RII(a,b); int cnta=s[a].size(); int cntb=s[b].size(); set
:: iterator it; int cnt=0; for(it=s[a].begin();it!=s[a].end();it++) if(s[b].find(*it)!=s[b].end()) cnt++; double ans1=(double)(cnt)/(cnta+cntb-cnt); ans1*=100; printf("%.2lf%%\n",ans1); }}
View Code

 

 

转载于:https://www.cnblogs.com/bxd123/p/10565165.html

你可能感兴趣的文章
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Java程序IP v6与IP v4的设置
查看>>
RUP(Rational Unified Process),统一软件开发过程
查看>>
数据库链路创建方法
查看>>
Enterprise Library - Data Access Application Block 6.0.1304
查看>>
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
jQuery如何获得select选中的值?input单选radio选中的值
查看>>
设计模式 之 享元模式
查看>>
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>