1063设置相似性(25分)(集)
给定两组整数,集合的相似性被定义为Nc/Nt*100%,其中(美国)北卡罗来纳州是两组共有的不同公共数的数量,Nt是两组中不同公共数的总数。你的工作是计算任何给定集合对的相似性。
Input Specification:
每个输入文件包含一个测试用例。每种情况首先给出一个正整数n=50,它是集合的总数。接下来是普通行,每一行给出一个集合,集合中有一个正的M (=104),后面是范围[0,109]内的M个整数。输入集合后,给出正整数K (=2000年),后面是K行查询。每个查询给出一对集合编号(集合编号从一到n ).一行中的所有数字都用空格隔开。
Output Specification:
对于每个查询,在一行中打印集合的相似性,以百分比形式精确到小数点后一位。
Sample Input:
3
3 99 87 101
4 87 101 5 87
7 99 101 18 5 135 18 99
2
1 2
1 3
Sample Output:
50.0%
33.3%
题目大意:
给定两个整数集合,它们的相似度定义为:Nc/Nt*100%。其中(美国)北卡罗来纳州是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度
(美国)北卡罗来纳州是两个集合的公共元素个数,nt是两个集合的所有包含的元素个数(其中元素个数表示各个元素之间互不相同)
分析:
因为给出的集合里面含有重复的元素,而计算(美国)北卡罗来纳州和新约(新约的缩写)不需要考虑两个集合里面是否分别有重复的元素,所以可以直接使用设置存储每一个集合,然后把设置放进一个数组里面存储。当需要计算集合a和集合b的相似度(美国)北卡罗来纳州和新约(新约的缩写)的时候,遍历集合a中的每一个元素,寻找集合b中是否有该元素,如果有,说明是两个人公共的集合元素,则nc,否则新界(新界的初值为b集合里面本有的元素)
原文链接:https://博客。csdn。net/lichuo/article/details/52138993
题解
#包含位/stdc .h
使用命名空间标准;
int main()
{
#ifdef ONLINE_JUDGE
#否则
freopen('1.txt ',' r ',stdin);
#endif
int n;
桂皮酸
setint a[n1];
for(int I=1;I=n;I){ 0
int k,tmp
然杀伤细胞
for(int j=0;JK;j ){
cintmp
a[i].插入(tmp);
}
}
int t,x,y;
转换成整形
for(int I=0;它;I){ 0
cinxy
int nc=0,nt=a[y].size();
for(auto it=a[x]).begin();它!=a[x].end();it){ 0
如果.find(*it)==a[y]。end())nt;
否则数控;
}
printf('%.1f%%\n ',(double)NC/nt * 100);
}
返回0;
}
本文来自博客园,作者:勇往直前的力量,转载请注明原文链接:https://www .cn博客。1999/p/15607210。超文本标记语言
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/121792.html