算法介绍
这个没什么好说的,就是一段比较简单的代码,具体的话要看题目。
自然溢出
这个是比较好用而且容易被卡的一种Hash方式。
用(2^{64})当模数然后做(Hash),常数比较小。
单模数
也是比较好卡的(Hash)之一,算法就是把上面算法的(2^{64})改成了(Mod),自己钦定的一个素数。
双模数
这个也是比较好卡的,希望某位dalao可以卡掉这个算法,让(Hash)不复存在。
考虑用两个模数,只有当Hash在这两个模数下都成立才是相等。
树哈希
考虑对于这个树的每一个点做一次遍历然后把(Hash)值存下来即可。
当然还有异或这种便于换根(所以比较好)的作法。
题目运用
[BJOI2015]树的同构
就是树Hash的板子。
[TJOI2017]DNA
感觉字符串有的时候就是把暴力运用到了极致。。。
考虑最多三个不同,那你直接暴力匹配即可,(Hash+O(2))就能够用两个(log)艹翻这题。
后话
如果想要知道怎么卡(Hash)的话,可以找我也可以baidu。