团体程序设计天梯赛-练习集 L2-005 集合相似度 STL set集合的交和并

L2-005 集合相似度 关键是理解题意,详细解释,安全食用哈~ 阅读详情

L2-005. 集合相似度

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越

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


错误代码,最后一个测试点超时,前几个测试点一直错,后来发现比如map<int> a

在判断if(a[i]) {......}时,如果i不在map里面,那么map会创建一个<i,0>键值对,然后这个<i,0>键值对会一直保留下去,不管以后用不用的到它,因此在

if(a[i]){......}之后要遍历map的时候要格外小心,要判断下<i,0>后者是否为零


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>

using namespace std;

const int maxn = 50;
map<int, int> m[maxn + 10];

int main()
{
  int N, M, K, tn;
  scanf("%d", &N);
  for (int t = 1; t <= N; t++) {
    scanf("%d", &M);
    for (int i = 0; i < M; i++) {
      scanf("%d", &tn);
      m[t][tn]++;
    }
  }
  scanf("%d", &K);
  int di, fen;
  for (int i = 0; i < K; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    map<int, int> tm;
    for (map<int, int>::iterator j = m[x].begin(); j != m[x].end(); j++) {
      if (j->second)  //debug
        tm[j->first]++;
    }
    for (map<int, int>::iterator j = m[y].begin(); j != m[y].end(); j++) {
      if (j->second)
        tm[j->first]++;
    }
    di = tm.size();

    fen = 0;
    for (map<int, int>::iterator j = m[x].begin(); j != m[x].end(); j++) {
      if (j->second) {
        if (m[y][j->first] != 0) fen++; //debug
      }
    }
    printf("%.2f%%\n", 100.0 * fen / di);
  }
  return 0;
}



使用algorithm中的set_intersection 函数和iterator中的inserter函数



#include <cstdio>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <set>

using namespace std;

const int maxn = 50;

int main()
{
	int N, M, K;
	scanf("%d", &N);
	set<int> s[maxn + 10];
	for (int t = 1; t <= N; t++) {
		scanf("%d", &M);
		for (int m = 0; m < M; m++) {
			int x;
			scanf("%d", &x);
			s[t].insert(x);
		}
	}
	scanf("%d", &K);
	for (int k = 1; k <= K; k++) {
		int x, y, Nc, Nt;
		scanf("%d%d", &x, &y);
		set<int> res;
		set_intersection(s[x].begin(), s[x].end(), s[y].begin(), s[y].end(), inserter(res, res.begin()));
		Nt = s[x].size() + s[y].size() - res.size();
		Nc = res.size();
		printf("%.2f%%\n", 100.0 * Nc / Nt);
	}
	return 0;
}




PAT-4C-L2-005-集合相似度(STL) 链接:https://www.patest.cn/contests/gplt/L2-005 L2-005. 集合相似度 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定两个整数集合,它们的 阅读详情

相关推荐

别只刷题了!用PTA L2真题学透C++ STL:set、vector、map实战指南

本文以PTA团体程序设计天梯赛L2真题为实战场景,深入解析C++ STL中set、vector和map三大核心容器的高阶应用。通过具体代码示例和性能对比,帮助开发者从基础使用进阶到精通运用,提升算法竞赛和工程开发中的编码效率与质量。

weixin_30294295的博客 240

L2-005 集合相似度(Java)

天梯赛练习题

Gracener的博客 654

【团体程序设计天梯赛 往年关键真题 详细分析&完整AC代码】L2-005 集合相似度(STL-set)& L2-006 树的遍历 (数据结构)

给定两个整数集合,它们的相似度定义为:Nc/Nt×100%。其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。

Obliviate的博客 483

集合相似度

7-4 集合相似度 (25 分) 给定两个整数集合,它们的相似度定义为:N c /N t×100%。其中N c是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 输入格式: 输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤104 ),是集合中元素的个数;然后跟M个[0,109 ]区间内的整数。之后一行给出一个正整数K(≤2000),随后K行,每行对应一对需要计算相似度的集合的编号

qq_51780315的博客 903

N5105 PVE UEFI核显直通Windows:从黑屏到HDMI输出的实战调优

本文详细介绍了在N5105处理器上实现PVE UEFI核显直通Windows的实战调优方法。针对黑屏和HDMI音频无法识别等常见问题,提供了系统参数调整、驱动模块加载、虚拟机配置等解决方案,帮助用户成功实现核显直通并优化性能。

weixin_42566424的博客 203

NX二次开发(python)-坯料尺寸(一)

一般在产品制造过程中,往往要判断一个模型在出模方向上的最小包容盒尺寸,在NX中可以用坯料尺寸命令实现,当然也有相应的代码实现,这或许可以帮助我们实现一些产品的坯料尺寸批量输出,节省人力。

dasfanfan的博客 816

L2-005 集合相似度 (25分)

给定两个整数集合,它们的相似度定义为:N ​c ​​ /N ​t ​​ ×100%。其中N ​c ​​ 是两个集合都有的不相等整数的个数,N ​t ​​ 是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 输入格式: 输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤10 ​4 ​​ ),是集合中元素的个数;然后跟M个[0,10 ​9 ​​ ]区间内的整数。 之后一行给出一个正整数K(≤2000),随后K行,每行对应一

old_Bai的博客 459

FreeRTOS面试题汇总

如果一个低优先级的任务持有一个信号量,高优先级的任务想要用这个信号量,造成的死锁怎么解决。12.FreeRTOS的多任务之间如何去进行通信的,什么方法,它实现原理是什么。任务间数据传输一共有三种形式,用的最多的是消息队列,其次是全局变量和信号量。简历上写了了解RTOS,问了rtos的问题,用过哪些函数。讲解FreeRtos原理,调度机制,底层原理,代码调用。FreeRTOS,你的三个任务控制,请问你是怎么实现的。freertos中EventBits_t是干啥的?freertos使任务切换的方式有哪些?

weixin_45636780的博客 1万+

团体程序设计天梯赛 L2-005 集合相似度

团体程序设计天梯赛 L2-005 集合相似度 题目链接 给定两个整数集合,它们的相似度定义为:N​c​​ /N​t​​ ×100%。其中 N​c​​ 是两个集合都有的不相等整数的个数,N​t​​ 是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 输入格式: 输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤1e4​),是集合中元素的个数;然后跟M个[0,1e​9​] 区间内的整数。 之后一行给出一个正整数K(≤200

旺崽的博客 2671

什么!!!寒假就要准备暑期实习

介绍暑期实习,从作用,时间线,投递渠道,技术准备,常见问题,经验教训几个方面介绍暑期实习

今天不coding的博客 1724

onnxruntime-gpu版本选择与CUDA环境配置实战指南

本文是onnxruntime-gpu版本选择与CUDA环境配置的实战指南。针对AI模型部署中常见的GPU无法调用问题,核心在于确保onnxruntime-gpu版本与系统CUDA Toolkit版本严格匹配。文章详细讲解了如何精准确定CUDA版本、查找官方对应关系、执行正确安装命令,并通过完整测试脚本验证GPU是否成功启用,最后提供了常见问题排查与生产环境调优建议。

weixin_29164091的博客 522

L2-005 集合相似度-PAT团体程序设计天梯赛GPLT

题目来源:团体程序设计天梯赛-练习集 题目地址:L2-005 集合相似度 题目大意 给定 nnn 个集合,然后有 kkk 次询问,每次询问都要求出 Nc/Nt×100%N_c / N_t \times100\%Nc​/Nt​×100% NcN_cNc​ 表示两个集合中都有的数的个数(重复不计),相当于求交集去重。 NtN_tNt​ 表示两个集合一共有多少个数(重复不计),相当于求并集去重。 ...

Veggie的博客 1万+

苹果搜索广告ASA开户教程

阅读导航 一、创建账号 1、登录网站 2、填写账号主体信息 3、填写商家和发票信息 4、选择付款方式 二、上传审核材料 1、上传文件 2、请求审批 3、上传文件中的常见问题 一、创建账号 1、用Apple ID登录ASA网站 首先我们进入开户网址:https://app-ads.apple.com/ 如果已拥有Apple ID,直接登录即可,如果没有Apple ID,可以先按照步骤创建Apple ID,再返回登录。 注意,这里登录的Apple ID也有讲究: ① 如果是开发

testflight121的博客 2128

团体程序设计天梯赛 L2-005 集合相似度 STL

https://pintia.cn/problem-sets/994805046380707840/problems/994805070149828608 思路:利用setsetset去重,计算的时候暴力即可,当然也可以利用mapmapmap。 set+map:set+map:set+map: #include<bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; using ll=long long; set<int&g

xiji333的博客 223

爬虫Incapsula reese84加密案例:Etihad航空(纯算法)

爬虫Incapsula reese84加密案例:Etihad航空,本文就不再讲解如何找加密参数、定位加密参数,以及分析加密的一个过程。就直接从扣算法开始,扣算法前先看之前讲解的加密函数生成的过程,文章会一个函数一个函数的讲解扣算法。fiddler根据规则替换本地文件。调试过程中遇到部分环境不一样是正常的,具体还要根据自己调试的js为准,就像之前补环境时是有二十一个循环,这次扣算法多出一个循环,不过大部分环境是一样的第一个函数:通过document.addEventListener添加了很多事件。

老衲爱洗头的博客 1992

YOLO26改进 - SPPF模块 | 发论文神器!LSKA注意力改进SPPF,增强多尺度特征提取能力,高效涨点!!!

本文介绍了Large Separable Kernel Attention (LSKA)模块及其在YOLO26中的结合应用。LSKA旨在解决Visual Attention Networks (VAN)使用大内核卷积时的计算效率问题,通过将2D深度卷积层的卷积核分解为级联的水平和垂直1-D卷积核,降低了计算复杂度和内存占用,且使VAN更关注物体形状。我们将集成LSKA的SPPF_LSKA模块引入YOLO26,大量实验表明,改进后的模型在对象识别、检测、分割和稳健性测试上表现出色。

魔改工程师的博客 252

L2-005 集合相似度 (25分)团体设计天梯赛

利用stl中的set做就好 技巧:两个集合的元素总个数=两个集合个数相加减去相同元素的个数 #include <bits/stdc++.h> using namespace std; const int N = 55; set<int> S[N]; int main(void) { int n; cin >> n; for (int i = 1; i <= n; i++) { int k; cin &g

qq_45455670的博客 158

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

团体程序设计天梯赛L2-005 集合相似度(STL)

思路:开个set随便搞搞就好了 #include #include #include using namespace std; sets[51]; int main() { int n; scanf("%d",&n); for(int i = 0;i<n;i++) { int num; scanf("%d",&num); while(num--) {

围巾的ACM博客 443

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

团体程序设计天梯赛-练习集L2-005. 集合相似度

L2-005. 集合相似度 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定两个整数集合,它们的相似度定义为:Nc/Nt*100%。其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 ...

weixin_30642029的博客 100

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

团体程序设计天梯赛(L2-005 集合相似度 (25 分))

题目: 思路分析: 我们只需要求出二个集合中的不同的个数 和相同的个数就行 但是要排除同一集合中相同元素的干扰 所以我们直接用stl中的set容器 代码实现: set<int> s[55]; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++){ int m,x; scanf("%d",&m); while(m--){

m0_57006708的博客 416

别只刷题了!用PTA L2真题拆解C++ STL:set、map、vector在算法竞赛中的实战技巧

本文通过PTA团体程序设计天梯赛L2真题,深入解析C++ STL中set、map和vector在算法竞赛中的实战技巧。从自动去重的set到高效键值映射的map,再到灵活的动态数组vector,帮助参赛者提升编码效率与解题能力。特别适合准备PTA竞赛的选手学习参考。

weixin_28672681的博客 221

2026/3/3日志

思路:用一个一维数组模拟小根堆即可(节点n的左右儿子:2*n, 2*n+1,n>=1),但要注意开map映射每个值在数组中的位置,交换值时也要交换位置,且需熟练stringstream的用法。可以考虑先把尾巴那段涂完,然后从前往后,当应被涂为箭头时,开涂,一直涂到尾巴段的前三个箭头。思路:正常建图,找入度为0的点开搜,注意用bfs别用dfs,dfs会爆栈,队列最后离队的点就是所求点。思路:用set去重,遍历求交集,然后求并集,注意需要预处理,实间复杂度为O(n*n*m*logm)

2401_87650976的博客 233

L2-005 集合相似度 (25 分)

给定两个整数集合,它们的相似度定义为:Nc /N​t​​ ×100%。其中N​c是两个集合都有的不相等整数的个数,N​t是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 输入格式: 输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤104 ),是集合中元素的个数;然后跟M个[0,10​9]区间内的整数。 之...

博客标题不能为空我也没办法 443

L2-005 集合相似度 java

【代码】L2-005 集合相似度 java。

iiiiiaaaaa337的博客 370
上一篇: hdu5688 2016"百度之星" - 资格赛(Astar Round1)Problem D map使用
下一篇: 团体程序设计天梯赛-练习集 L2-006 树的遍历 根据后序中序建树+BFS
Daemoonn
博客等级 码龄11年 42粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值