20251115 - Hash 总结

news/2025/11/15 19:48:49/文章来源:https://www.cnblogs.com/LcukyCat/p/19226131

你说得对,但我几乎从来不把哈希叫做哈希,我习惯了叫 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.mzph.cn/news/966472.shtml

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

相关文章

BZOJ2372 music

思路 两个字符串等价,相当于两个串中排名相同的字符,出现的位置相同。 于是我们哈希,分别维护每种字符的出现位置序列。 现在瓶颈在于得到每种字符的排名。 发现字符集只有 \(25\),可以直接枚举,桶排即可。然后再…

P11664 [JOI 2025 Final] 缆车 / Mi Telefrico

思路 注意到,DAG 符合条件当且仅当节点 \(2 \sim n\) 的入度都不为零。 对于一个左端点 \(l\),合法的 \(r\) 具有单调性。设最小的使 \(l\) 合法的 \(r\) 为 \(R_l\),则区间 \([q_l,q_r]\) 当 \(R_{q_l} \le q_r\) …

WPF中RelayCommand的完成与使用详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

C++篇(14)二叉树进阶算法题 - 详解

C++篇(14)二叉树进阶算法题 - 详解2025-11-15 19:34 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !im…

Python 潮流周刊#127:Python 3.16 JIT 性能提升计划

本周刊由 Python猫 出品,精心筛选国内外的 400+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。 温馨提…

非线性序列密码结构

NFG,NCG,NCGC,CCG关于LFSR线性反馈移位寄存器和攻击方法B-M算法参考:序列密码概述部分:https://www.cnblogs.com/luminescence/p/18938331 下面内容主要围绕对LFSR进行非线性改造的四种经典方法展开,以克服LFSR序列…

2025/11/15

2025/11/15学习算法

LoongOS 上传文件

LoongOS 上传文件一般开发板预装的系统都自带有一个ssh服务器 如果默认没打开ssh服务 通过ifconfig查看ip地址 打开ssh服务systemctl start sshd 然后用MobaXterm连接ssh并登录 先在控制台选好地方 比如 cd \test 直接…

2025年目前品质好的羊毛地毯厂家推荐

文章摘要 2025年羊毛地毯行业持续向环保化、个性化方向发展,手工编织与天然材质成为市场主流趋势。本文基于行业数据与用户口碑,深度评测当前市场上品质优异的羊毛地毯生产厂家,为采购商和消费者提供权威参考。文末…

2025年市场上品质好的羊毛地毯制造企业

摘要 2025年,羊毛地毯行业持续增长,消费者对环保、设计和品质的需求日益提升。本文基于行业数据和用户评价,为您呈现市场上品质优秀的羊毛地毯制造企业排名,并提供详细分析供参考。如果您有采购或合作意向,可通过…

基础设施即服务(IaaS)全面解析:云计算的基石

本文详细介绍了基础设施即服务(IaaS)的概念、架构、工作原理、实施要点、优缺点及主要供应商。IaaS作为云计算三大服务模式之一,通过虚拟化技术为企业提供灵活、可扩展的计算资源。什么是基础设施即服务(IaaS)? 基础…

CentOS 7 通过 Packstack 安装 OpenStack Train 完整步骤

CentOS 7 通过 Packstack 安装 OpenStack Train 完整步骤该文章详细指导如何在 CentOS 7 系统上通过 Packstack 工具安装 OpenStack Train。首先介绍 OpenStack 的定义、核心特性(开源免费、资源统一管理等)与应用场…

【STM32工程开源】基于STM32的人体健康监测环境

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:【C# OOP 入门到精通】从基础概念到 MVC 实战(含 SOLID 原则与完整代码)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

tailwind自定义class问题小记

非常好的问题!您提到了两个关键点: 1. @layer components 是否合适? 是的,非常合适! pure-ipt 应该定义在 @layer components 中,因为:@layer base - 用于基础样式(如 *, body, html) @layer components - 用…

2025年主流开源AI智能体框架平台概览 - 实践

2025年主流开源AI智能体框架平台概览 - 实践2025-11-15 19:06 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

threading.local()的实例化机制

threading.local() 的实例化机制threading.local() 是全局实例化一次的:它在模块/类/函数级别(通常在 __init__ 或全局作用域)创建一个单一的 local 对象实例(类型为 _thread._local)。这个对象本身是共享的(所有…

Tarjan复建

塔尖踏践他荐太监肽键抬肩台站太真。写在前面: 我 \(C_aO\) 了全™的忘干净了于是步了鱼鱼的后尘开始切黄绿DP绿蓝 \(Tarjan\) 。 哎呀呀反正肝硬化不受人待见没人看就随便写写了。强连通分量: 这个没忘干净,当年为…

采用git进行项目管理

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Golang游戏开发笔记:地图索引系统实现

好家伙, 在游戏开发,尤其是后端服务的构建过程中,我们常常从一个简单的想法或原型开始。 代码直接、功能明确,一切看起来都很好。但随着项目复杂度的提升,最初的“简洁”设计往往会变成“僵化”的枷锁。0.需求分析…