树哈希
顾名思义,对树进行哈希,当然哈希得出的是有根树的形态是否一致,想要快速做无根树,那么需要找出每棵树的重心(只有最多两个)进行哈希。
当然,判断树的形态相同之前要先判一下两棵树的点数是否相同。
柿子:
\[f_{now}=size_{now} \times \sum_{i} f_{\displaystyle son_{now,i}} \times M^{i-1}
\]
其中 \(f\) 当然要先排序。这种手造小数据能hack,可以通过对于小数据直接暴力判断来尽量避免hack。
\[f_{now}=1+\sum f_{son[i]}\times prime(size_{son[i]})
\]
其中 \(prime(i)\) 表示第 \(i\) 个质数。
例题:
板子。
先对第一棵树每一个为根的哈希,存一个STL里,然后枚举第二棵树所有叶子,以它为根,求出其唯一子树的哈希值然后判断即可。算哈希只需换根 dp 即可。