树哈希
文章平均质量分 51
hesorchen
这个作者很懒,什么都没留下…
展开
-
HDU2228栈、深搜、树哈希/同构
题目Same or not给出两个01字符串,表示两棵树上的深搜方式。其中0表示向深层递归,1表示回溯。问两个字符串有没有可能是在同一颗树上生成的。求解根据深搜的性质,先用栈建树。建好两棵树之后,求出树的重心,然后以重心为根,进行树哈希,利用哈希值判断两棵树是否同构即可。代码#include <bits/stdc++.h>using namespace std;const int N = 1e4 + 5;vector<int> mp[N];int siz[N]原创 2021-08-18 20:05:50 · 154 阅读 · 0 评论 -
树同构/树哈希
题目P5043 【模板】树同构([BJOI2015]树的同构)树的同构与哈希判断两棵树是否同构,可以用树哈希实现,两颗树的哈希值一样时,我们可以判定他们同构。树的哈希只在有根树中有意义。当要判定两棵树是否同构时,我们可以选择它们的重心为根进行哈希。时间复杂度为O(nlogn)O(nlogn)O(nlogn)。关于树哈希,用的比较多的方法是将子树从小到大排序,对于第iii个子树,乘上第iii个质数。val[y]=∑x∈sonyval[x]∗prime[size(x)]val[y]=\sum_{x\i原创 2021-08-18 17:42:34 · 591 阅读 · 0 评论