一道比较好的 树Hash 的题目,提供一种不一样的Hash方法。 首先无根树的 同构 判断一般的做法只有树Hash,所以不会的同学可以做了 "Luogu P5043 【模板】树同构([BJOI2015]树的同构)" 再来。 首先我们直接考虑一种朴素的想法,暴力求出$A$树中以每一个点为根时的Hash ...
分类:
Web程序 时间:
2019-02-01 23:50:07
阅读次数:
308
"传送门" 把所有的树给哈希起来就好了 具体的方法是一个节点的哈希值就是它所有儿子的哈希值给哈希起来,然后以每个节点为根算出它作为根节点的哈希值。那么把每棵树的哈希值排个序,与之前的比较就好了 注意把儿子的哈希值给哈希起来的时候要把他们排个序 ...
分类:
其他好文 时间:
2018-12-04 14:34:39
阅读次数:
164
题面 "传送门" Sol 套路:找出重心,如果有两个就新建一个点 然后把这棵树hash一下 设$f[i][j]$表示第一颗树到$i$第二棵树到$j$,子树$i,j$同构的付出的最小代价 转移:每次把这一层hash值相同的点做一边二分图权匹配(KM/费用流)就好了 ~~一遍AC~~ cpp inclu ...
分类:
其他好文 时间:
2018-05-31 00:36:19
阅读次数:
160
今天的题目画风诡异 于是就不写详细写题解了.. 简单说一下吧 t1 是平衡树维护哈希值 我之前看过用线段树维护哈希值得 然后那题没有去补 于是这题就爆炸了 最后暴力还写挂了 吃枣药丸 t2 正解是基环外向树同构什么的 但是可以特判过去 我写了暴力 没写挂 但是CE了.. t3 提交答案题 爆搜 + ...
分类:
其他好文 时间:
2018-02-27 21:16:37
阅读次数:
202
题意是求一棵无根树本质不同独立集的个数 那个所谓“极寒点”的选取就是独立集。 结构相同就是树同构,完全相同就是树的形态和独立集都相同。 我们先求出树的重心,就可以转化为有根树同构问题。 令$f[u][1]$为在$u$的子树中,选取$u$的方案树,$f[u][0]$为在$u$的子树中,不选取$u$的方 ...
分类:
其他好文 时间:
2017-10-22 00:35:31
阅读次数:
220
【BZOJ3162】独钓寒江雪 题解:先进行树hash,方法是找重心,如果重心有两个,则新建一个虚点将两个重心连起来,新点即为新树的重心。将重心当做根进行hash,hash函数不能太简单,我的方法是:将x的所有儿子的hash值排序,然后将这些hash值立方合在一起作为x的hash值。 进行完树has ...
分类:
其他好文 时间:
2017-08-18 20:07:16
阅读次数:
117
【BZOJ3197】[Sdoi2013]assassin Description Input Output Sample Input 4 1 2 2 3 3 4 0 0 1 1 1 0 0 0 Sample Output 1 HINT 题意:给你两棵同构的树,每个节点都有权值0/1,现在想改变第一棵 ...
分类:
其他好文 时间:
2017-08-18 19:52:54
阅读次数:
136
转载请注明出处:http://www.cnblogs.com/fraud/ ——by fraudhttps://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3933给你...
分类:
其他好文 时间:
2015-08-14 21:12:57
阅读次数:
108
题目大意:给定一棵仙人掌,求有多少自同构仙人掌同构问题= =
曾经出过一个判断两个仙人掌是否同构的题,感觉和这个题很类似首先假设这是一棵树,考虑怎么做我们首先找到树的重心(如果有两个就在中间加一个点变成一个)
然后把树Hash
对于一棵树 如果某一哈希值的子树有kk个 就把答案乘上一个k!k!现在变成了仙人掌,那么我把每个环变成一个红点连向环上的所有点,然后把原先环上的边拆除,可以得到一棵树,...
分类:
编程语言 时间:
2015-07-10 15:16:21
阅读次数:
254
这是一个未被验证过正确性的判断有根树同构的哈希函数。可以记忆化搜索或者dfs求得。f(u)表示以u为根的子树的哈希值。size(u)表示以u为根的子树的大小。son(u)表示u的儿子数量。chi表示u的第i个儿子。p为种子。O(n)。typedef unsigned long long ull;#d...
分类:
其他好文 时间:
2015-05-29 23:04:55
阅读次数:
168