- 当需要维护一个子串的哈希值,可以用哈希前缀和:\(hash_{l-r} = pre_r - pre_l \times base^{r - l + 1}\)。
 - 哈希常搭配二分使用。
 - \(gp\_hash\) 十分快。
 - 当 \(\sum len_i \le 10^5\) 时,它的长度的种类数是 \(\sqrt n\) 级别的。
 - 当 \(n \le 10^5\) 时,可以考虑 \(O(n\sqrt n)\) 的做法。
 - 线段树,树状数组都可以维护哈希。
 - 哈希的题目基本绕不开四个基本问题:字符串匹配,最长回文子串,最长公共子串,字符串中不同子字符串的数量。
 - 字典树上的最长公共前缀所在的点是两个串的 \(LCA\)。
 - \(Trie\) 树是一棵多叉树,只要先序遍历整棵树,输出相应的字符串便是按字典序排序的结果。
 - \(01trie\) 长用来处理异或和之类的问题。
 - 在 \(trie\) 树上全局加一实际上是对每一个数找到最低位的一个零,然后对它以下的位数进行翻转操作,可以通过交换左右儿子,然后递归 \(0\) 儿子实现。
 - 求周期的数量等价于求 \(border\) 的数量。
 - \(manacher\) 可以求出对于任意一个左右端点,它可以拓展的最长长度,P4555 [国家集训队] 最长双回文串。
 - 当一个问题有多个字符串时,可以考虑建一棵 \(trie\) 树。
 - 字符串哈希要加一。
 - 当需要最小化字符串的字典序时,可以考虑按位考虑,每一位从 \(a-z\) 贪心考虑。P9694 [GDCPC 2023] New but Nostalgic Problem
 
