首页 > 其他分享 >集合相似度

集合相似度

时间:2023-05-30 17:04:49浏览次数:39  
标签:std int cin sc 相似 集合 using


集合相似度

给定两个整数集合,它们的相似度定义为: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%

题不难,关键是要思考怎样省时间

#include<iostream>
#include<set>
#include<iomanip>
namespace myspace{
	using std::cin;
	using std::cout;
	using std::endl;
	using std::set;
	using std::fixed;
	using std::setprecision;
} 
using namespace myspace;
int main(){
	std::ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int n;
	set<int> sc[55];
	cin>>n;
	for(int i=0,k;i<n;i++){
		cin>>k;
		for(int j=0,t;j<k;j++){
			cin>>t;
			sc[i].insert(t);
		}
	}
	int k;
	cin>>k;
	for(int i=0,a,b;i<k;i++){
		cin>>a>>b;
		a--,b--;
		int cntFenzi=0;
		for(int t:sc[a]){
			cntFenzi+=sc[b].count(t);
		}
		int cntFenmu=sc[b].size()-cntFenzi+sc[a].size();
		cout<<fixed<<setprecision(2)<<cntFenzi*100.0/cntFenmu<<"%"<<endl;
	}
}


标签:std,int,cin,sc,相似,集合,using
From: https://blog.51cto.com/u_16144724/6380482

相关文章

  • 7-10 集合相似度 (25分)
    超时代码////CreatedbyHMNon2020/1/27.///*7-10集合相似度(25分)给定两个整数集合,它们的相似度定义为:Nc/Nt×100%。其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。输入格式:......
  • 基于词频的文件相似度 (30分)
    实现一种简单原始的文件相似度计算,即以两文件的公共词汇占总词汇的比例来定义相似度。为简化问题,这里不考虑中文(因为分词太难了),只考虑长度不小于3、且不超过10的英文单词,长度超过10的只考虑前10个字母。输入格式:输入首先给出正整数N(≤100),为文件总数。随后按以下格式给出每个文件......
  • C# 程序开发中如何移除List集合的某列(属性)呢?
    如题,在C#&.NET,.NETCore程序开发中如何移除List集合的某列(属性)呢?比如,有以下的MyClass类: publicclassMyClass{publicintColumn1{get;set;}publicstringColumn2{get;set;}publicintColumn3{get;set;}}现在MyClass的集合myList,如何......
  • 3.4. Java集合框架(List、Set、Map等)
    Java集合框架是Java提供的一套用于存储和操作数据的接口和类。它包括以下几个主要部分:接口:集合框架定义了一系列接口,如Collection、List、Set、Map等。实现类:集合框架提供了一些实现这些接口的类,如ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap等。......
  • 第八单元 数组与集合
    1.数组(Array)数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。声明数组变量并不是声明number0、number1、...、number99一个个单独的变量,而是声明一个就像numbers这样的变量,然后使用numbers[0]、numbers[......
  • Collections.rotate 对List集合进行循环移动操作
    它的作用是将列表中的元素向右移动指定的距离,如果移动的距离是负数,则表示向左移动。方法的声明如下:publicstaticvoidrotate(List<?>list,intdistance)其中,list是要进行移动的List集合,distance是指移动的距离,可以是正数或负数。demo1importjava.util.Arrays;im......
  • Java8 List集合如何移除满足条件的元素
    1.移除List<String>中指定元素for(inti=assSupplementList.size()-1;i>=0;i--){TypgHouseOrderAssessmentSupplementitem=assSupplementList.get(i);if(item.getBzx().contains("新建房屋")){ass......
  • java集合过滤出符合条件的List元素集合(lambda表达式)
    使用Java8中的lambda表达式过滤ModelMapmodel=newModelMap();TSmClazzTSmClazz=tSmClazzService.get(id);List<Student>students=TSmClazz.getStudents();if(flag.equals("0")){List<Student>boys......
  • 颠覆性新工具:瞬间生成相似图片!
    根据给定图片生成类似的图片,如果有这样的工具就太方便了。比如你是一名设计师,给客户设计了一张图,如果能快速生成几张类似的图片,是不是就给客户提供了更大的选择空间。再比如你平时写文章、做PPT,需要用到配图,使用网上的图片会有什么问题?可不可以用这个工具呢?可以发挥自己想象力......
  • Python中列表(List)元组(Tuple)集合(Set)的区别和适用场景
    在Python中,列表(List)和元组(Tuple)都是序列类型的数据结构。它们具有相似的特性,如可以通过下标访问元素、支持切片操作等。而集合(Set)则是一个无序的集合类型。下面是它们各自的特点和适用场景:列表(List):有序的序列类型。可以存储任意类型的对象,并且可以动态地修改元素。适用于需......