网站页面布局用什么做,荆州网站建设推荐,京东网站建设吗,广州网站制作知名 乐云践新L2-005 集合相似度 (25分) 给定两个整数集合#xff0c;它们的相似度定义为#xff1a;Nc/Nt 100%。其中Nc 是两个集合都有的不相等整数的个数#xff0c;Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。
输入格式#xf…L2-005 集合相似度 (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%
题解
set的用法
代码
两个集合都有的不相等整数的个数就是去重后两个集合重复的个数 两个集合一共有的不相等整数的个数两个集合并起来再去重得到的集合元素个数
#includebits/stdc.h
using namespace std;
setints[55];
int main()
{ios::sync_with_stdio(false);int n;cinn;setinta[60];for(int i1;in;i){int x;cinx;for(int j1;jx;j){int y;ciny; s[i].insert(y);}}cinn;for(int i1;in;i){int x,y;cinxy;int size1s[x].size();int size2s[y].size();int size30;for(setint::iterator its[x].begin();it!s[x].end();it){if(s[y].find(*it)!s[y].end()){size3;}}printf(%.2lf%%\n,(double)size3/(double)(size1size2-size3)*100);}
}