树哈希

顾名思义,对树进行哈希,当然哈希得出的是有根树的形态是否一致,想要快速做无根树,那么需要找出每棵树的重心(只有最多两个)进行哈希。

当然,判断树的形态相同之前要先判一下两棵树的点数是否相同。

柿子:

\[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\) 个质数。

例题:

LuoguP5043

板子。

LuoguP4323

先对第一棵树每一个为根的哈希,存一个STL里,然后枚举第二棵树所有叶子,以它为根,求出其唯一子树的哈希值然后判断即可。算哈希只需换根 dp 即可。

posted @ 2022-08-26 15:38  infinities  阅读(47)  评论(0编辑  收藏  举报