当前位置: 首页 > news >正文

hash判断两个集合是否完全相同

现有两个无序整数集合 \(a\), \(b\),判断二者是否相同。
可以使用 \(hash\):钦定一个质数 \(P\) 与模数 \(M\),对两个集合分别求:

\[(\sum_{i=1}^{n}P^{r_{i}})\space mod \space M \]

看结果是否相同即可。

题目:link

相当于是要求解 \(n\) 元一次方程,给了 \(n-1\) 个等式和所有解的集合,解方程。首先可以消元,将 \(n-1\) 个未知数都表示成关于同一个未知数 \(r\) 的形式,然后可以枚举 \(r\),看形成的未知数集合是否与给定的未知数集合相同即可。那么如何快速判断两个集合是否相同就成为了解决此题的关键。可以注意到消元后的未知数形式是有一定规律的:奇数位置 \(r\) 的系数一定是 \(1\), 偶数位置 \(r\) 的系数一定是 \(-1\)。那么我们可以按奇偶先将形成的未知数集合分成两部分,其中系数为 \(-1\) 的集合大致可表示为:

\[P^{c_{1} - r}, P^{c_{2} - r}...P^{c_{m}-r} \]

它们的和可以表示为:

\[\frac{\sum_{i=1}^{m}P^{c_{i}}}{P^{r}} \]

分子是可以直接预处理出来的,因此每次枚举 \(r\),可以 \(O(1)\) 求出奇数位置的和;对于所有系数为 \(1\) 的偶数位置也是同理。这样就可以 \(O(1)\) 判断形成的集合是否与原未知数集合相同。具体细节见代码。

code

http://www.gsyq.cn/news/26271.html

相关文章:

  • 2025微弧氧化加工厂家推荐:常州华源专业表面处理技术供应商
  • 2025防腐工程厂家推荐:无锡华金喷涂技术领先,定制防腐解决方案
  • 2025年10月全屋智能家居品牌推荐:盈趣领衔对比评测榜
  • Java 多线程编程详解
  • [LangChian] 05.结构化提示词
  • git提PR时很多别人的commit,清理多余的commit
  • Visual Studio 使用小知识记录
  • DeepSeek-OCR:让 AI “一眼看懂” 的黑科技
  • 业务记录:登录
  • kafka2.8出现NotLeaderOrFollowerException
  • IEC 61850 ICD文件解析
  • 2025石头纸设备厂家权威推荐:鼎浩包装科技环保吹塑机制造专家
  • Oracle故障分析:启用与禁用表的约束是否会导致存储过程无效
  • 一文读懂字符、字形、字体
  • Moe-ctf Misc
  • 智联笔记项目——251021为分享功能添加有效期
  • WPF 具有跨线程作用的UI元素
  • 深入解析:手撕哈希全家桶!unordered_map/set 底层 + 位图布隆过滤器----《Hello C++ Wrold!》(24)--(C/C++)
  • Flink 方案配置从 0 到可部署
  • Redis为什么快 - 实践
  • 操作系统应用开发(二十一)RustDesk 域名访问故障—东方仙盟筑基期 - 详解
  • prufer板子
  • Promise多个then、catch、finally的执行结果分析与总结
  • vSAN物理磁盘故障处理
  • 2025年10月医用面膜产品推荐:权威对比评测榜助术后修护精准决策
  • 2025年10月电动叉车销售公司推荐:五强对比评测榜
  • 类方法和实例方法区别 flutter
  • 今天给电脑安装了新华财经
  • [Linux]学习笔记系列 -- lib/xarray.c eXtensible Array (XArray) 可扩展数组 - 教程
  • 2025 年桥梁护栏厂家最新推荐排行榜:聚焦安全防护与耐用性能的实力企业甄选指南