PTA天梯赛习题 L2-005 集合相似度

题目

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

题解 

我自己就没怎么理解这道题目,有点把我说绕了,大概的意思就是,有两个集合,你需要找出这两个集合不同的数的个数,例如存在集合[1, 2, 3],这个集合不相等整数的个数就是3(不存在重复元素),如果是集合[3, 2, 4, 3, 5],这个集合不相等整数的个数就是4,有两个3但是计数只能计为一个

再来说Nc和Nt

Nc是两个集合都有的不相等整数的个数,还是距离说明,用样例,对于[99 87 101]和[87 101 5 87]这两个集合,它们都有的不相等整数就是87和101,Nc其实就是找两个集合重复元素的个数,而Nt你可以把这两个集合合并成一个大集合找出这个大集合不同的数的个数,其实Nt = 第一个集合不相等整数的个数 + 第二个集合不相等整数的个数 - Nc,相同的元素我们只记录一次

因为涉及到去重的问题,就会用到set(不了解set的同学需要去查一下哦,很好用的,并不难,记住它常用的几个方法就行)这个容器,具体的还是看代码吧,我写了注解

如有问题,欢迎指正


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N= 1e2 + 24, inf = 1e9 + 7, M = 1e5+24;
int main()
{int n, i, j, m, k, t, a, b, nt, nc = 0, ta, tb;cin >> n;
//	因为是要统计集合不相等整数的个数,所以我们使用set筛出重复元素 set<int> s[55];for(i = 1; i <= n; i ++){cin >> m;while(m --){cin >> t;s[i].insert(t); //装入 } }cin >> m;while(m --){cin >> a >> b;ta = s[a].size(), tb = s[b].size(), nc = 0;//创建一个集合的迭代器set<int>::iterator it;for(it = s[a].begin(); it != s[a].end(); it ++){//迭代对象是一个地址it,所以要对其进行取值*it//查询ve[b]中是否含有元素*it,如果不含有则返回迭代器地址ve[b].end()if(s[b].find(*it) != s[b].end()){nc ++;}}// 减nc是为了去除重复元素 nt = (ta + tb) - nc;
//		cout << ta << " " << tb << " " << " " << nc << " " << nt << endl;printf("%.2f\%\n", 100.0 * (double)nc / nt);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/771214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入了解服务器硬件:从基础知识到实际应用

在当今数字化的社会中&#xff0c;服务器扮演着至关重要的角色&#xff0c;它们是支撑互联网、云计算、大数据等技术发展的基石。而理解服务器硬件的基础知识对于从事IT领域的人员来说至关重要。本文将从服务器硬件的基础知识出发&#xff0c;介绍服务器硬件的组成、作用及其在…

Python算法100例-4.3 多项式之和

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序 1&#xff0e;问题描述 计算下列多项式的值&#xff1a; 2&#xff0e;问题分析 方法一&#xff1a;把上面多项式中的每一个分项标上记号&#xff0c…

浅谈C++引用的使用以及底层原理

1、引用概念 引用不是新定义一个变量&#xff0c;而 是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。 类型& 引用变量名(对象名) 引用实体&#xff1b; 注意&#xff1a;引用类型必须和引用实体…

Python并发编程的三种方式:多线程(threading)、多进程(multiprocessing),以及基于协程的异步I/O(asyncio)

在Python中&#xff0c;多线程、多进程和基于协程的异步I/O是实现并发编程的三种主要方法。每种方法都有其特定的使用场景和优势。理解这些不同方法的基础原理和适用情境对于编写高效、可扩展的Python程序至关重要。 多线程&#xff08;threading&#xff09; 概念&#xff1…

面试(三)

1.介绍一下自己吧&#xff1f; 要求&#xff1a;言简意赅&#xff0c;和应聘岗位相关的简历(根据公司岗位更改自我介绍)&#xff0c;为什么能够胜任这个岗位的工作&#xff0c;为什么要应聘这个岗位的原因是什么&#xff1f;&#xff08;职业规划&#xff09; 总结&#xff1…

华清远见作业第五十三天——ARM(第七天)

代码 key_inc.h #ifndef __KEY_INC_H__ #define __KEY_INC_H__ #include "stm32mp1xx_gic.h" #include "stm32mp1xx_exti.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h"void key1_it_config();void key2_it_config(…

【polarctf的部分题解】

【web】phar —》私有属性赋值 当时遇到不知道privated该怎样赋值才可以&#xff0c;链子挺简单的&#xff0c;但是语法不熟悉 <?php include funs.php; highlight_file(__FILE__); if (isset($_GET[file])) {if (myWaf($_GET[file])) {include($_GET[file]);} else {unse…

案例分析:汽车零配件行业CRM解决方案,成功案例揭秘!

近年来&#xff0c;国家大力推动新能源汽车行业发展&#xff0c;在国内汽车工业实现“弯道超车”的同时&#xff0c;新能源汽车出口海外&#xff0c;新市场有望为自主新能源方向贡献增量。 汽车行业的快速发展&#xff0c;势必会带动汽车零配件行业走向增长。从政策方面看&…

牛客网BC-33 统计成绩(数组排序思想)

题目如下 --------------------------------------------------------------------------------------------------------------------------------- 思路&#xff1a;以数组形式输入&#xff0c;并将数组顺序&#xff08;或者逆序&#xff09;排序&#xff0c;最后输出最大值最…

Redis入门到实战-第十二弹

Redis实战热身Bitfields篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的&#xff08;采用BSD许可证&#xff09;&#xff0c;用作数据库、缓存、消息代理…

并发编程之Callable、Runnable、Future与FutureTask

目录 前言一、Callable与Runnable1.1 Callable1.2 Runnable1.3 二者对比 二、Future与FutureTask2.1 Future2.2 FutureTask2.3 二者对比 三、综合使用3.1 Callable执行Future获取结果3.2 Callable执行任务FutureTask获取执行结果 四、应用场景 前言 在 Java 中&#xff0c;Cal…

小明SEO:网站域名被投诉怎么恢复呢?分享

小明SEO对他的网站进行了分析&#xff0c;发现网站上存在大量非法内容&#xff0c;比如股票、金融、外汇等&#xff0c;甚至还有虚假宣传来吸引其他网站的流量。 随后他检查了该网站的tdk设置&#xff0c;尤其是网站标题&#xff0c;发现也存在违规行为。 这就是网站域名被投诉…

富格林:抵制虚假受害保全出金

富格林指出&#xff0c;黄金一直以避险资产和投资产品闻名&#xff0c;一直备受投资者们的关注。但是在现货黄金交易中&#xff0c;有部分投资者指出不幸遭遇了虚假操作导致出金失败等受害现象。事实上&#xff0c;现货黄金火热&#xff0c;市面上也或多或少涌现了虚假操作现象…

LeetCode 两数之和 解法 (转发篇)

题&#xff1a;两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。…

React Native 应用打包

引言 在将React Native应用上架至App Store时&#xff0c;除了通常的上架流程外&#xff0c;还需考虑一些额外的优化策略。本文将介绍如何通过配置App Transport Security、Release Scheme和启动屏优化技巧来提升React Native应用的上架质量和用户体验。 配置 App Transport…

Python 构建项目工具库之pybuilder使用详解

概要 在Python项目开发中,良好的构建和自动化流程是非常重要的。PyBuilder是一个用于构建Python项目的工具,它提供了简单易用的方式来定义和管理项目的构建过程,包括依赖管理、测试、代码质量检查等。本文将深入探讨PyBuilder库的使用方法、功能特性以及如何利用它来构建优…

SQL映射文件

一、SQL映射的xml文件 1.1 mapper元素 二、select 三、别名与Java映射 四、resultMap 啊

一道很有意思的题目(考初始化)

这题很有意思&#xff0c;需要你对初始化够了解才能解出来 &#xff0c;现在我们来看一下吧。 这题通过分析得出考的是初始化。关于初始化有以下知识点 &#xff08;取自继承与多态&#xff08;继承部分&#xff09;这文章中&#xff09; 所以根据上方那段知识点可知&#xf…

Linux/Backdoor

Backdoor Enumeration nmap 第一次扫描发现系统对外开放了22&#xff0c;80和1337端口&#xff0c;端口详细信息如下 22端口对应的是ssh服务&#xff0c;80端口使用Apache&#xff0c;title上写着backdoor&#xff0c;而且可以看出使用了wordpress&#xff0c;1337端口暂时还…

HyperWorks2023 下载地址及安装教程

HyperWorks是一套由Altair Engineering开发的集成化仿真平台。这个平台涵盖了许多不同领域的仿真和优化应用&#xff0c;包括结构分析、流体力学、多体动力学、优化、电磁场分析等。 HyperWorks提供了一系列强大的工具和模块&#xff0c;用于进行复杂的工程仿真和优化任务。它…