7-6 集合相似度 (25分) (排序)
给定两个整数集合,它们的相似度定义为:Nc/Nt×100%。其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。
输入格式:
输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤104),是集合中元素的个数;然后跟M个[0,109]区间内的整数。
之后一行给出一个正整数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分) (排序)相关推荐
- L2-005 集合相似度 (25分)
L2-005 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:Nc/Nt ×100%.其中Nc 是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你的 ...
- 7-9 集合相似度 (25 分)(交集/并集)
7-9 集合相似度 (25 分) 给定两个整数集合,它们的相似度定义为:Nc/Nt×100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你的任务就是计算 ...
- 【CCCC】L2-005 集合相似度 (25分),维护set数组去重,比较统计
problem L2-005 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:N c /N t ×100%.其中N c 是两个集合都有的不相等整数的个数,N t ...
- 7-9 集合相似度 (25分)
7-9 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:N c /N t ×100%.其中N c 是两个集合都有的不相等整数的个数,N t 是两个集合一共 ...
- 7-10 集合相似度 (25分)
超时代码 // // Created by HMN on 2020/1/27. // /*7-10 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:N c /N t ×1 ...
- 天梯赛---7-6 集合相似度 (25分)
7-6 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:Nc/Nt×100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你 ...
- 数据结构查找-7-4 集合相似度 (25 分)
7-4 集合相似度 (25 分) 给定两个整数集合,它们的相似度定义为:Nc/Nt×100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你的任务就是计算 ...
- 7-9 集合相似度 (25 分)(天梯赛练习题)
7-9 集合相似度 (25 分) 给定两个整数集合,它们的相似度定义为:Nc/Nt×100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你的任务就是计算 ...
- 7-14 集合相似度 (25分)set
给定两个整数集合,它们的相似度定义为:N c /N t ×100%.其中N c 是两个集合都有的不相等整数的个数,N t 是两个集合一共有的不相等整数的个数.你的任务就 ...
最新文章
- 数据结构第一次作业——抽象数据类型
- 玩转百度地图(二)之画圆,高德地图、搜搜地图、搜狗地图等稍微修改即可...
- java 微信隐藏右上角_React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
- jieba结巴分词--关键词抽取_结巴中文分词原理分析2
- 马化腾300万奖励中国女排 网友:马云老师清空购物车还安排吗?
- 通过BitmapFactory.Options解决activity之间传递图片出现内存溢出(OOM)问题
- 【Oracle】sqlplus中 删除键backspace时出现^H
- A - 1 CodeForces - 500A
- 一代女皇武则天——计算机达人成长之路(12)连载
- 玩转你的AlphaGo(MAC OS)
- VC调用Lingo并转化成 QT 工程编写一个特定的解决线性问题的软件
- 游戏引擎渲染管线的总结
- cocos2dx基础篇(10)——编辑框之一CCTextFieldTTF
- 几台服务器怎么虚拟成一台,多台服务器虚拟成一台
- Studio 3T for MongoDB
- League of Legends 通过 游戏ID查询玩家QQ号码。
- 功率 dbm vrms vpp mw换算 (正弦波)
- 【国产替代】推动安全芯片产业国产化,华秋电子与华翼微达成合作!
- 鸿蒙os系统测评,鸿蒙OS 2首批评价出炉,看已升级用户都怎么说的
- 河南大学计算机学院魏倩,何欣-计算机与信息工程学院官网
热门文章
- 微软翻译使用AI来打破智能手机上的语言翻译障碍
- C语言:if(a)——if(!a)——if(a!=0)——if(a==0)有什么区别?
- php自定义返回状态码,Thinkphp6自定义状态码
- 利用单分子技术进行生物研究--光镊在生命科学中的应用
- 直角三角形 射影定理 欧几里德定理
- 计算机退出程序的四种方法,退出windows10系统账户的四种方法
- 微型计算机存储器系统中的cache是(),微型计算机存储器系统中的Cache是
- iphone录制脚本_如何在iPhone上录制电话
- LabVIEW--S1-前言和入门
- 抑郁症的复发风险到底有多高?如何预防抑郁症复发?