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

输入格式:
输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤10​4​​),是集合中元素的个数;然后跟M个[0,10​9​​]区间内的整数。
之后一行给出一个正整数K(≤2000),随后K行,每行对应一对需要计算相似度的集合的编号(集合从1到N编号)。数字间以空格分隔。

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

输入样例:
3
3 99 87 101
4 87 101 5 87
7 99 101 18 5 135 18 99
2
1 2
1 3

输出样例:
50.00%
33.33%
这个题目的难点在于读懂题目
nc:两集合相等数的个数。
nt:两集合一共有的不重复的数的个数。

下面两种解法,第一种是用的while循环去重,第二种是STL中的set(集合)自动去重。

说白了就是第一种是自己想的,第二种是抄的。
原博客
第二种有些语句我不懂,先凉这里,知道就回来补上。

#include <bits/stdc++.h>
using namespace std;
int a[55][2020];
int main()
{int n,i,j,k,x,y;double sum1,sum2,sum3;scanf("%d",&n);for(i=1; i<=n; i++){scanf("%d",&a[i][0]);for(j=1; j<=a[i][0]; j++){scanf("%d",&a[i][j]);}sort(a[i]+1,a[i]+a[i][0]+1);}scanf("%d",&k);while(k--){sum1=0;sum2=0;scanf("%d %d",&x,&y);i=1;j=1;while(i<=a[x][0]&&j<=a[y][0]){while(i<a[x][0]&&a[x][i]==a[x][i+1])i++;while(j<a[y][0]&&a[y][j]==a[y][j+1])j++;if(a[x][i]==a[y][j]){sum2++;sum1++;i++;j++;}else if(a[x][i]<a[y][j]){sum2++;i++;}else if(a[x][i]>a[y][j]){sum2++;j++;}}if(i>a[x][0]){while(j<=a[y][0]){while(j<a[y][0]&&a[y][j]==a[y][j+1])j++;sum2++;j++;}}else{while(i<=a[x][0]){while(i<a[x][0]&&a[x][i]==a[x][i+1])i++;i++;sum2++;}}sum3=(1.0*100*sum1)/sum2;printf("%.2f%%\n",sum3);}return 0;
}
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <set>
using namespace std;int main()
{set<int>st[51];/*集合,集合中每个元素只出现一次,并且是排好序的。set<Type>A,      定义集合AA.erase(item)    删除元素itemA.insert(item)   把item放入集合AA.clear()        清空集合AA.empty()        判断是否为空A.size()         返回元素个数*/int n,m;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&m);while(m--){int k;scanf("%d",&k);st[i].insert(k);}}int k;scanf("%d",&k);while(k--){int a,b;scanf("%d %d",&a,&b);int cnt=0;for(set<int>::iterator it=st[a].begin();it!=st[a].end();it++){if(st[b].count(*it))cnt++;}int sum= st[a].size()+st[b].size()-cnt;printf("%.2f%%\n",cnt*100.0/sum);}return 0;
}

7-6 集合相似度 (25分) (排序)相关推荐

  1. L2-005 集合相似度 (25分)

    L2-005 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:N​c/N​t​​ ×100%.其中N​c 是两个集合都有的不相等整数的个数,N​t是两个集合一共有的不相等整数的个数.你的 ...

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

    7-9 集合相似度 (25 分) 给定两个整数集合,它们的相似度定义为:Nc​/Nt​×100%.其中Nc​是两个集合都有的不相等整数的个数,Nt​是两个集合一共有的不相等整数的个数.你的任务就是计算 ...

  3. 【CCCC】L2-005 集合相似度 (25分),维护set数组去重,比较统计

    problem L2-005 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:N ​c ​​ /N ​t ​​ ×100%.其中N ​c ​​ 是两个集合都有的不相等整数的个数,N ​t ...

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

    7-9 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:N ​c ​​ /N ​t ​​ ×100%.其中N ​c ​​ 是两个集合都有的不相等整数的个数,N ​t ​​ 是两个集合一共 ...

  5. 7-10 集合相似度 (25分)

    超时代码 // // Created by HMN on 2020/1/27. // /*7-10 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:N ​c ​​ /N ​t ​​ ×1 ...

  6. 天梯赛---7-6 集合相似度 (25分)

    7-6 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:N​c​​/N​t​​×100%.其中N​c​​是两个集合都有的不相等整数的个数,N​t​​是两个集合一共有的不相等整数的个数.你 ...

  7. 数据结构查找-7-4 集合相似度 (25 分)

    7-4 集合相似度 (25 分) 给定两个整数集合,它们的相似度定义为:Nc​/Nt​×100%.其中Nc​是两个集合都有的不相等整数的个数,Nt​是两个集合一共有的不相等整数的个数.你的任务就是计算 ...

  8. 7-9 集合相似度 (25 分)(天梯赛练习题)

    7-9 集合相似度 (25 分) 给定两个整数集合,它们的相似度定义为:Nc​/Nt​×100%.其中Nc​是两个集合都有的不相等整数的个数,Nt​是两个集合一共有的不相等整数的个数.你的任务就是计算 ...

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

    给定两个整数集合,它们的相似度定义为:N ​c ​​ /N ​t ​​ ×100%.其中N ​c ​​ 是两个集合都有的不相等整数的个数,N ​t ​​ 是两个集合一共有的不相等整数的个数.你的任务就 ...

最新文章

  1. 数据结构第一次作业——抽象数据类型
  2. 玩转百度地图(二)之画圆,高德地图、搜搜地图、搜狗地图等稍微修改即可...
  3. java 微信隐藏右上角_React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
  4. jieba结巴分词--关键词抽取_结巴中文分词原理分析2
  5. 马化腾300万奖励中国女排 网友:马云老师清空购物车还安排吗?
  6. 通过BitmapFactory.Options解决activity之间传递图片出现内存溢出(OOM)问题
  7. 【Oracle】sqlplus中 删除键backspace时出现^H
  8. A - 1 CodeForces - 500A
  9. 一代女皇武则天——计算机达人成长之路(12)连载
  10. 玩转你的AlphaGo(MAC OS)
  11. VC调用Lingo并转化成 QT 工程编写一个特定的解决线性问题的软件
  12. 游戏引擎渲染管线的总结
  13. cocos2dx基础篇(10)——编辑框之一CCTextFieldTTF
  14. 几台服务器怎么虚拟成一台,多台服务器虚拟成一台
  15. Studio 3T for MongoDB
  16. League of Legends 通过 游戏ID查询玩家QQ号码。
  17. 功率 dbm vrms vpp mw换算 (正弦波)
  18. 【国产替代】推动安全芯片产业国产化,华秋电子与华翼微达成合作!
  19. 鸿蒙os系统测评,鸿蒙OS 2首批评价出炉,看已升级用户都怎么说的
  20. 河南大学计算机学院魏倩,何欣-计算机与信息工程学院官网

热门文章

  1. 微软翻译使用AI来打破智能手机上的语言翻译障碍
  2. C语言:if(a)——if(!a)——if(a!=0)——if(a==0)有什么区别?
  3. php自定义返回状态码,Thinkphp6自定义状态码
  4. 利用单分子技术进行生物研究--光镊在生命科学中的应用
  5. 直角三角形 射影定理 欧几里德定理
  6. 计算机退出程序的四种方法,退出windows10系统账户的四种方法
  7. 微型计算机存储器系统中的cache是(),微型计算机存储器系统中的Cache是
  8. iphone录制脚本_如何在iPhone上录制电话
  9. LabVIEW--S1-前言和入门
  10. 抑郁症的复发风险到底有多高?如何预防抑郁症复发?