00:00:00
前言 & 闲话
做哈希题时没打起十二分精神少用mod(亲验),建议unsigned long long
对于顺序不同的序列判断相同可以尝试考虑异或和相等,且异或可变性很多,性质也很多。
正文
字符串哈希/序列哈希
假设两个字符串为
哈希函数:
设
二维矩阵哈希
很容易可以想到要分别从行和列入手。
设
先从列开始
同样的,考虑如何得出大矩阵中的小矩阵的哈希值,发动大脑想象图,本人就不画了,设小矩阵是
树上哈希
假设现在遍历到节点
哈希转移式为:
拓展:异或哈希
引入
给定一个长度是
分析
可以知道的是普通的哈希是固然不行的,因为顺序不同,每个位上
可是异或有个缺点,就是不同的数异或和可能相同,解决方案就是把每个数映射成随机大的数(哈希思想),设随机数的位数是
小锦囊
随机数:
mt19937_64 rnd(time(0));