字符串哈希
hesorchen
这个作者很懒,什么都没留下…
展开
-
牛客寒假集训营第四场B字符串哈希+二分
题目武辰延的字符串赛时没想到hashO(1)O(1)O(1)判断枚举S1,二分S2长度,利用Hash判断两字符串相等。代码AC代码:/* * @Author: hesorchen * @Date: 2020-11-26 09:12:46 * @LastEditTime: 2021-02-21 16:19:05 * @Description: 栽种绝处的花 */#include <bits/stdc++.h>using namespace std;const unsi原创 2021-02-21 16:23:08 · 158 阅读 · 0 评论 -
字符串哈希On求最长回文子串
模板题链接 AcWing139. 回文子串的最大长度众所周知,manacher可以On求最长回文子串,但是神奇的字符串hash也可以做到求最长回文串。步骤:预处理字符串,类似于manacher,每两个字符中间插入‘#’,因为这样才能枚举中心。预处理正哈希和逆哈希,如果正哈希[l,r]==逆哈希[l,r],说明两个字符串相同。枚举回文中心,二分求回文半径。可以看出,时间复杂度是O(nlogn)O(nlogn)O(nlogn),代码如下:unsigned long long order1[2原创 2020-09-18 20:07:11 · 5194 阅读 · 5 评论 -
字符串Hash
字符串Hash原理,将字符串映射成一个值,是一个单向加密的过程。比较简单和常用的是进制哈希,我们把字符串看成是p进制数,然后使用unsigned long long的自然溢出(相当于是对264−12^{64}-1264−1取模),如果两个字符串的hash值相同,则可以认为两个字符串相同。单个字符串的Hash值要求长度为len的字符串str的Hash值先预处理出一个pwd[]数组,pwd[i]表示pip^ipi。Hash[]表示字符串的哈希值(p进制取模值)。显然有Hash[i]=(Hash[i−1原创 2020-09-16 18:03:59 · 3774 阅读 · 0 评论