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

20251115 - Hash 总结

你说得对,但我几乎从来不把哈希叫做哈希,我习惯了叫 Hash。

比赛链接:https://vjudge.net/contest/766880。

卡 Hash 的出题人都是毒瘤出题人喵!一点也不良心。

A - Barn Echoes G

由于这个长度只有 \(80\),因此随便枚举然后 Hash 判断一下就可以了。甚至都可以不用 Hash,直接判断,但是出于对这道题目的尊重我还是使用了 Hash,为了练习嘛。

B - 字符串哈希

Hash 板题。对每个字符串进行 Hash 然后丢进 map 判断或者数组排序去重,取 size 什么的即可。

C - 阅读理解

map 不好玩。

\(n\)set,针对每篇文章把它所出现的字符串 Hash 之后丢进去,查找的时候枚举每篇文章然后在对应的 set 里面 count 就可以啦。

所以为什么要卡 map 呢。

D - 倒排索引

比较暴力的一个题,首先去枚举那个查询词 \(q\) 的所有拆出来的子串,Hash 后丢进 map 里标记上。接着枚举每个单词然后挨个去跑,装上了 map 里有的就增加答案就行了。

E - Colliding Encoding

按照他那个也许错误的神秘映射方法算出一个“Hash”值,然后再用正常的 Hash 再算一个,扔 map 里匹配即可。注意他那里边是有 \(0\) 的,如果作为开头可能会误判,考虑每个串前面加个 \(1\) 或者别的数,这样所谓前导零就能看得到了。

F - 于是他错误的点名开始了

随便 Hash,丢 map 里算个数就好了。

G - 匹配统计

顺着做一个 Hash,反过来做一个 Hash,以便求正着或者反着的区间 Hash 值。然后二分找,Hash 截取判相等,就可以啦!

H - ABB

你说得对,但我真的很想用 KMP 水掉这题。

和上一题一样的套路,不过这里判的是回文,且最后的答案需要推一个简单的小公式。以及注意回文长度,偶数和奇数是两种不同的情况喔!

I - 积木小赛

一开始几乎就是,一个双指针的套路,枚举 Bob 的情况然后指针跑去找 Alice 行不行得通。那么 Hash 用在哪了呢?就是最后的判重啦!不过,这里不能用 map,会被卡 /ll 所以我们只能使用排序去重,或者是 umap 等别的速度快些的东西。

J - ANT-Antisymmetry

异式的判回文,不过原理是一样的。和 G 类似,正反两遍 Hash,不过这里需要选择一遍(正反均可)做“反 Hash”——说人话就是,\(0\) 当做 \(1\) 去压,\(1\) 当做 \(0\) 去压。与 G 不同的是,这里肯定是偶数,不信你可以自己试试看,举出反例算我输!其实我已经把这个东西证明了,但是不想写,所以你无论如何都写不出反例的!

K - Censoring S

Hash 情况扔栈里做类似模拟的操作,去模拟这个过程,一删就删一大把,衔接算 Hash 的时候要删掉首位加上末位。记录一下哪些位置没删,遍历输出即可。

Hash 总结

Hash 是一个非常方便好用的字符串算法,多用于字符串比较、字符串匹配类型的题目。它可以将字符串的 \(O(len)\) 操作通过预处理降到 \(O(1)\),高效又简洁。但是其正确性无法做到严格保障,虽然说概率通常不高,但是也不能排除出现 Hash 冲突的情况——这个时候,你可以选择更大更保险更冷门的模数(选冷门是因为怕有人对着常用模数卡),或者多做几个不同的 Hash 给正确性套上多层保障,甚至有时候需要上随机数 Hash 这类玄学东西。总而言之,Hash 是一个很赞的字符串算法哟!

说这么多,你不是照样没在 25 S 考场上给 C 打 Hash 的暴力。

Thanks reading.

http://www.rkmt.cn/news/50600.html

相关文章:

  • BZOJ2372 music
  • P11664 [JOI 2025 Final] 缆车 / Mi Telefrico
  • 非线性序列密码结构
  • 2025/11/15
  • LoongOS 上传文件
  • CentOS 7 通过 Packstack 安装 OpenStack Train 完整步骤
  • threading.local()的实例化机制
  • 采用git进行项目管理
  • 网络爬虫:简单静/动态网页
  • MySQL MVCC实现原理
  • 算法第三次作业
  • 2025年境外商务出差保险哪里有卖:TOP10平台专业解析
  • 完整教程:PMBT2222A,215 开关晶体管功率二极管 NXP安世半导体 音频放大电路 LED驱动 应用
  • 【前缀和+差分+二分】LeetCode 2528. 最大化城市的最小电量
  • Springboot启动时记录进程ID
  • 详细介绍:【Linux】07.Ubuntu开发环境部署
  • 2025 最新电缆品牌权威推荐:耐火 / 阻燃 / 智能 / 光伏等全品类优质厂商榜单,附国际认证测评
  • 2025 最新电缆制造厂家推荐!电缆品牌权威榜单发布,耐火 / 智能 / 特种电缆优选企业全解析
  • iHaier2.0 智能协同办公模块(Doc-Collab)实现实用的方案详解
  • 2025 最新钢结构源头厂家推荐排行榜,聚焦优质供应与专业服务精选榜单美标 / 欧标钢结构 / 环保设备 / 水泥矿山 / 机械设备钢结构厂家推荐
  • 当下市面上靠谱的平移门服务商
  • 2025年11月中国伸缩门源头厂家口碑推荐榜单
  • 2025年步进式加热直饮水机订制厂家权威推荐榜单:奶茶店全自动烧水器/大型工业净水器/饭店专用开水器源头厂家精选
  • 2025 年 11 月漆渣脱水设备,漆渣脱水机,漆渣脱水装置最新推荐,技术实力与市场口碑深度解析!
  • Convex
  • 【题解】P4707 重返现世
  • 滞留卡常题
  • Cursor ai network issue workaround in Ubuntu 22.04
  • 2025 年漆渣脱水设备厂家最新推荐榜单:优质品牌厂家工艺系统装置全解析,助力企业高效环保处置漆渣脱水系统/漆渣脱水机/漆渣脱水装置厂家推荐
  • [KaibaMath]1024 丑陋的真子集符号⫋的由来