启发式合并
文章平均质量分 85
zjunzhao
这个作者很懒,什么都没留下…
展开
-
【题解】codeforces778C Peterson Polyglot
题目链接题意:给定一棵trie树,可以删除一层边,再将父边被删且父亲相同的结点对应的子树合并得到一棵新trie树,求新trie树的最小结点数。分析:启发式合并。在合并结点u的子树时,选择将小子树合并到大子树里,这样总的合并的时间复杂度是O(nlgn)的。 证明:合并的耗时来自于对小子树的遍历。设全体小子树的遍历总量为T,考虑每个结点u对T的贡献。设结点u可以作为小子树的第原创 2017-03-06 22:36:13 · 926 阅读 · 0 评论 -
【题解】codeforces741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
题目链接题意:给定一棵有根树,结点编号为1~n,根结点为结点1。每条边上有一个字母,求各子树内最长的满足“路径上的字母经过重排后可以构成回文串”的简单路径。分析:对结点u,用2进制数vec[u]表示结点u到根结点的路径上各字母的数目的奇偶性。若第i个字母数目为奇数则vec[u]的第i位为1,否则为0。子树u内满足要求的路径可以分成两类,一类经过结点u,一类不经过结点u。由于不经过结点u的路原创 2017-03-29 18:53:31 · 1247 阅读 · 0 评论 -
【算法】树上启发式合并算法
树上启发式合并算法是启发式合并算法在树上的应用。下面我直接通过一个例子来讲解这个算法。 例:给定一棵有根树,树的结点编号为1~n,根结点为结点1。结点i有颜色col[i],其中1≤col[i]≤n。要求回答m个询问,每个询问回答颜色c在子树u中出现多少次。 显然要将查询离线处理,即对子树u的查询都“挂”到结点u上。我们用cnt[c]表示颜色c出现的次数,那么一种原创 2017-03-25 17:22:50 · 6514 阅读 · 0 评论