第九章 哈希表 AcWing 2 1549. 集合相似度

news2025/7/15 14:17:55

第九章 哈希表 AcWing 2 1549. 集合相似度

原题链接

AcWing 1549. 集合相似度

算法标签

哈希表 位运算

思路

使用unordered_set数据结构将数据插入指定集合

如何计算Nc(两集合交集)

在这里插入图片描述

如何计算Nt(两集合并集)

在这里插入图片描述

输出问题

WA 精度丢失

printf("%.1lf%%\n", 100.*nc/nt);

AC

printf("%.1lf%%\n", (double)nc / nt * 100);

显然 100.*nc产生了精度丢失,但是,对于浮点数运算,
无法保证精度丢失会在哪次运算产生,
甚至无法保证之前未产生精度丢失的数据再进行相同计算,是否会导致精度丢失
精度丢失往往会导致计算结果不准确,
解决方案
比较保险的方案是对于计算结果增加一个精度值(精度值的选择依题意, 一般取1e-8),但是Acwing此题测试数据较强,加一个精度值依旧Wrong Answe,PAT数据较弱,无论是否增加一个精度值,都可以AC。
在这里插入图片描述
更为保险的方案是对于计算结果先进行精度转换,再进行精度计算
AC

// (double)nc 进行精度转换
// / nt * 100 精度计算 
printf("%.1lf%%\n", (double)nc / nt * 100);
// nc*1.0 对于整数*1.0 相当于只进行精度转换 未进行精度计算 
// /(nt)* 100 进行精度计算 
printf("%.1lf%%\n",(nc*1.0)/(nt)* 100);

代码

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define int long long
#define xx first
#define yy second
#define ump unordered_map
#define us unordered_set
#define pq priority_queue
#define rep(i, a, b) for(int i=a;i<b;++i)
#define Rep(i, a, b) for(int i=a;i>=b;--i)
using namespace std;
typedef pair<int, int> PII;
const int N=55, INF=0x3f3f3f3f3f3f3f3f, MOD=1e9+7;
const double Exp=1e-8;
//int t, n, m, cnt, ans;
int n, m, x, a, b, nc, nt, k;
double res;
us<int> uu[N];
inline int rd(){
   int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
   return s*w;
}
void put(int x) {
    if(x<0) putchar('-'),x=-x;
    if(x>=10) put(x/10);
    putchar(x%10^48);
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	n=rd();
	rep(i, 1, n+1){
	    m=rd();
	    while(m--){
	        x=rd();
	        uu[i].insert(x);
	    }
	}
	k=rd();
	while(k--){
	    nc=nt=0;
	    a=rd(), b=rd();
	    for(auto y:uu[a]){
	        if(uu[b].count(y)){
	            nc++;
	        }
	    }
	    nt=uu[a].size()+uu[b].size()-nc;
	   // printf("%.1lf%%\n", 100.*nc/nt);
	   printf("%.1lf%%\n", (double)nc / nt * 100);
	}
	return 0;
}

参考文献

AcWing 1549. 集合相似度(PAT甲级辅导课)y总视频讲解

原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
在这里插入图片描述

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

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

相关文章

干掉 “重复代码”,这三种方式绝了!

软件工程师和码农最大的区别就是平时写代码时习惯问题&#xff0c;码农很喜欢写重复代码而软件工程师会利用各种技巧去干掉重复的冗余代码。 业务同学抱怨业务开发没有技术含量&#xff0c;用不到设计模式、Java 高级特性、OOP&#xff0c;平时写代码都在堆 CRUD&#xff0c;个…

BCD编码和ASCII码

计算机里&#xff0c;字母&#xff0c;各种字符以及指挥计算机执行操作的指令&#xff0c;均用二进制数的组合表示&#xff0c;称为二进制编码 目录 ASCII码&#xff08;汇编语言程序设计的时候会常用&#xff09; BCD码&#xff08;了解&#xff09; ASCII码&#xff08;汇…

等数值计算方法学习笔记第4章第三部分【数值积分(数值微分)】

高等数值计算方法学习笔记第4章第三部分【数值积分&#xff08;数值微分&#xff09;】六、数值微分&#xff08;第四次课&#xff09;1、中点方法与误差分析2、插值型的求导公式3、习题和表格4、知识结构图六、数值微分&#xff08;第四次课&#xff09; 1、中点方法与误差分析…

【图像处理】小波编码图像中伪影和纹理的检测(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

一年一度的科技狂欢盛会——2022亚马逊云科技re:Invent全球大会

一年一度的科技狂欢盛会&#xff0c;2022年亚马逊云科技re:Invent全球大会即将于北京时间2022年11月29日盛大开启&#xff01;届时全球各领域关注“云计算圈”发展的人都将齐聚一堂&#xff0c;共同聆听5大重磅嘉宾的主题演讲&#xff0c;700前沿技术话题…… 携全球合作伙伴&…

《计算机工程》投稿经验分享

历经两个月终于录用了 投稿过程真的太心酸了 第一次投计算机工程与应用&#xff1a;历时两周&#xff0c;拒稿 第二次投计算机科学&#xff1a;加急15天&#xff0c;增刊录用&#xff0c;撤稿 第三次投计算机应用与软件&#xff1a;说文件太大&#xff0c;修改文件大小重投&…

选择合作伙伴是最大关键:网宿科技的云业务拓展之路

关注IT圈子的小伙伴们&#xff0c;对网宿科技这个名字想必都是耳熟能详。在众多发力云计算业务的科技企业当中&#xff0c;近年来业绩表现出众的网宿科技&#xff0c;无疑是相当引人瞩目的一家。那么问题就来了&#xff1a;网宿科技当初是怎样走上了这条云业务拓展之路&#xf…

【知识网络分析】二模网络(two node)、多模网络(multi node)与多级别网络(multi level)

二模网络(two node)、多模网络(multi node)与多级别网络(multi level) 1 二模网络(two node)1.1 读取本地文献并构建二模网络数据集1.2 网络数据集精简1.3 网络图绘制及美化2 多模网络(multi node)3 多级别网络(multi level)1 二模网络(two node) 1.1 读取本地文…

web期末网站设计大作业 奶茶店网站美食餐饮网站设计与实现(HTML+CSS+JavaScript)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

【网页设计】HTML做一个属于我的音乐页面(纯html代码)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

JAVA学习笔记- - - day 2

&#x1f495;前言&#xff1a;作者是一名正在学习JAVA的初学者&#xff0c;每天分享自己的学习笔记&#xff0c;希望能和大家一起进步成长&#x1f495; 目录 &#x1f495;前言&#xff1a;作者是一名正在学习JAVA的初学者&#xff0c;每天分享自己的学习笔记&#xff0c;希望…

15.变量的存储类别

变量的存储类别 内存的分区 1.内存&#xff1a;物理内存&#xff0c;虚拟内存。 虚拟内存&#xff1a;操作系统虚拟出来的的内存。 操作系统会再物理内存和虚拟内存之间做映射。 在32位系统下&#xff0c;每个进程的寻址范围是4G&#xff1a;0x00 00 00 00 ~ 0xff ff ff ff …

XSStrike工具使用说明

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是XSStrike工具使用说明。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未授权…

详解设计模式:工厂方法模式

工厂方法模式&#xff0c;又称工厂模式、多态工厂模式和虚拟构造器模式&#xff0c;通过工厂父类定义负责创建产品的公共接口&#xff0c;子类负责生产具体对象。可以理解为简单工程模式的升级&#xff0c;解决简单工厂模式的弊端。 &#xff5e; 本篇内容包括&#xff1a;关于…

CANdelaStudio-从入门到深入到实践目录

前文介绍诊断协议那些事儿专栏&#xff0c;为大家深入介绍了ISO 14229各个服务的基础知识、请求与响应的报文格式&#xff0c;详情可查看&#xff1a;诊断协议那些事儿&#xff0c;从本专题开始&#xff0c;将由浅入深的展开诊断实际开发与测试的数据库编辑&#xff0c;包含大量…

强化学习调度环境:析取图和离散事件仿真

获取更多资讯&#xff0c;赶快关注上面的公众号吧&#xff01; 文章目录何为析取图和离散事件仿真模型析取图模型离散事件仿真模型强化学习环境调度环境基于析取图的调度环境基于离散事件仿真的调度环境总结近日有小伙伴在复现强化学习求解作业车间调度的文章代码问题时遇到一些…

Python01(安装环境以及开发工具PyCharm)

目录 一、环境下载&安装 二、开发工具下载&安装 一、环境下载&安装 1、Python环境安装包下载 官方网址&#xff1a;https://www.python.org/downloads/windows/ 选择一个安装包进行下载&#xff0c;建议不要下载最新的。 2、环境安装 双击下载好的环境安装包进…

Rational rose 2007 下载和安装教程

文章目录Rational rose 简介一&#xff0c;下载Rational rose 2007二&#xff0c;安装Rational rose 2007三&#xff0c;激活Rational Rose 2007四&#xff0c;启动Rational Rose 2007Rational rose 简介 Rational Rose是Rational公司出品的一种面向对象的统一建模语言的可视化…

云原生系列 【基于CCE Kubernetes编排实战】

✅作者简介&#xff1a; CSDN内容合伙人&#xff0c;全栈领域新星创作者&#xff0c;阿里云专家博主&#xff0c;华为云享专家博主&#xff0c;掘金后端评审团成员 &#x1f495;前言&#xff1a; 最近云原生领域热火朝天&#xff0c;那么云原生是什么&#xff1f;何为云原生&a…

基于交流潮流的电力系统多元件N-k故障模型研究(Matlab代码实现)【电力系统故障】

&#x1f4cb;&#x1f4cb;&#x1f4cb;本文目录如下&#xff1a;⛳️⛳️⛳️ ​ 目录 1 概述 2 考虑多元件故障的交流潮流重要性度量&#xff08;N-k&#xff09; 3 考虑多元素故障的元素重要性度量 3 数学模型 1 概述 现代社会依赖于关键的基础设施系统&#xff0c;如电力…