
哈希表
文章平均质量分 55
OJ
Ypuyu
Ypuyu
展开
-
[哈希表] lg-P1102. A-B 数对(哈希表+双指针+模板题)
文章目录1. 题目来源2. 题目解析 1. 题目来源 链接:P1102 A-B 数对 2. 题目解析 水题,题目不难,但是答案记得开 long long...............,要不一直 WA 一个点。这种求个数、求方案、且限制条件不够强的题目,一定要考虑最终的方案数是否很大。 题解区发现一位大佬使用双指针来做,也很不错,贴一下大佬的思路~ 我在考虑能不能直接采用 lower_bound()、upper_bound() 代替这两个 while()…但貌似必然没有双指针的效果好,常数可能很大…甚至是原创 2021-05-14 14:27:51 · 182 阅读 · 0 评论 -
[哈希表] lg-P5266 【深基17.例6】学籍管理(哈希表+unordered_map()坑点+模板题)
文章目录1. 题目来源2. 题目解析 1. 题目来源 链接:P5266 【深基17.例6】学籍管理 2. 题目解析 水题,unordered_map<> 基本使用。 坑点: unordered_map 即哈希表,不论对其赋值与否都会在哈希表中插入这个值,即 res += hash[t],若 t 查找不到则 res += 0 也不影响正确结果,但是这个无用的 t 会被插入到哈希表中。 代码: // https://www.luogu.com.cn/problem/P5266 #include原创 2021-05-14 13:52:48 · 153 阅读 · 0 评论 -
[哈希表] lg-P5250. 【深基17.例5】木材仓库(哈希表+lower_bound()边界情况+代码细节)
文章目录1. 题目来源2. 题目解析 1. 题目来源 链接:P5250 【深基17.例5】木材仓库 2. 题目解析 本来以为是道水题…确实思维上很水,但是实现上踩坑频繁… set<int> 维护木材长度即可,lower_bound() 查找长度最接近的木材,出货就 erase()。但是,但是,但是,lower_bound() 可能会查到 S.end() 迭代器,且我们不能直接 erase() 迭代器…然后就疯狂报错了… 在出货的时候,一定要找清楚出货的到底是谁,即到底是哪个迭代器,因为集合非空,原创 2021-05-14 13:26:20 · 222 阅读 · 0 评论 -
[字符串哈希] lg-P3405. 省市Cities and States(字符串哈希+USACO2016)
文章目录1. 题目来源2. 题目解析 1. 题目来源 链接:P3405 [USACO16DEC]Cities and States S 相关题目:[字符串哈希+模板]字符串哈希 2. 题目解析 字符串哈希的基本应用,重点在数据组织上了。 且本题花里胡哨做法很多,map 当然也是个很好的选择。可以看看题解区大佬的各种做法。 拿出前两位字符组织成一个长度为 4 的字符串,进行字符串哈希映射,在 vector 中依旧模拟开散列,哈希取模值作为下标,哈希值作为字符串唯一标识,记录出现个数。 注意题目要求处于同一洲的原创 2021-05-14 11:26:18 · 125 阅读 · 0 评论 -
[字符串哈希] lg-P3370. 【模板】字符串哈希(字符串哈希+手写哈希表+模板题)
文章目录1. 题目来源2. 题目解析 1. 题目来源 链接:P3370 【模板】字符串哈希 相关题目:[字符串哈希+模板]字符串哈希 2. 题目解析 字符串哈希模板题,在此是直接哈希整个字符串,并加以存储。利用 vector 模拟开散列,是手写哈希表。 对于相同哈希值的字符串加以存储,再进行相等判断,不相等则说明两字符串不等,则答案 ++ 即可。 而在 [字符串哈希+模板]字符串哈希 中则更加高明,可以对于任意一个前缀进行字符串哈希来进行任意子串的判等,属于字符串哈希的进阶用法。 代码: // https:原创 2021-05-14 10:53:50 · 93 阅读 · 0 评论 -
[字符串哈希+模板]字符串哈希
文章目录0. 前言1. 字符串哈希 0. 前言 Biu 字符串前缀哈希法。预处理出所有字符串前缀的哈希,数组存储,下标从 1 开始存储。 将字符串看成一个 p 进制的数,例如前缀"ABCD"的哈希值:把这个字符串看出 p 进制的数,那么这个值就是: hash[4]=(1∗p3+2∗p2+3∗p1+4∗p0)%mod;hash[4] = (1 * p^3 + 2 * p^2 + 3 * p^1 + 4 * p^0 ) \% mod;hash[4]=(1∗p3+2∗p2+3∗p1+4∗p0)%mod; 关于 m原创 2020-10-22 19:05:17 · 534 阅读 · 0 评论 -
[哈希表+模板] 模拟散列表
文章目录0. 前言1. 拉链法(开散列)2. 开放寻址法 0. 前言 哈希表按照存储方式而言分为两种实现方法: 开放寻址法(闭散列) 拉链法(开散列) 至于这两个的概念即定义可参考之前的博文: [C++ 系列] 82. 详解哈希结构解决哈希冲突及模拟实现闭散列、开散列 其与离散化一样,都是将大值域小数量的数据进行映射的紧密存储,但是 离散化是一种特殊的哈希方式,它要求映射后数据保序。 在算法题目中,一般是仅有添加和查找两种操作,并不需要在哈希表中执行删除操作。如果真的需要删除,都是开一个数组,在待删除点原创 2020-10-22 18:28:50 · 263 阅读 · 0 评论 -
[哈希表] lc-1002. 查找常用字符
文章目录1. 题目来源2. 题目说明3. 题目解析 1. 题目来源 链接:1002. 查找常用字符 2. 题目说明 3. 题目解析 简单的哈希表的应用,由于均为小写字母,则映射到数字后范围就是 [0,26][0,26][0,26] 之间的整数,不限单词的前后顺序,找到各个单词中均重复的字母。 可以针对每一个字符串进行哈希映射,形成一个二维哈希映射表,在每一列中寻找最小的哈希值就是该映射字符的出现次数。 具体可以看看这个中间输出的哈希表,很容易理解。 在本题中,最后处理输出时,需要将数字 0,处理为字符串原创 2020-10-14 20:24:25 · 177 阅读 · 0 评论