
Trie树
逐梦起航-带梦飞翔
为了更加长远的快乐!
展开
-
CH1602 The XOR Largest Pair(Trie)
题意 在给定的n个整数a1,a2,…,an中选出两个进行异或运算,得到的结果最大是多少。 题解 trie 异或是建立在二进制上的,所以这题的解放当然离不开二进制。 把每个数用二进制表示出来,从高位(31位)到低位逐个插入,建成01trie。 根据异或的特性,想要结果大,必须两者二进制位差别大。从树根(高位)开始,每次尽量选择与自己不同的子节点去,一直按这样的策略匹配到末位。 每个数先与...原创 2018-08-14 20:46:27 · 353 阅读 · 0 评论 -
poj2764 The xor-longest Path(Trie)
题意 一颗树n个节点,每个边有个权值,在树上找一条简单路径,使得这条路径上的边权异或值最大。 题解 前缀异或和+trie 设d[x]=d[fa[x]] xor e[k].c,这样做的好处是可以很方便的求出两点路径上边权的异或值wight(x,y)=d[x] xor d[y]。无论是在同一棵子树还是分散在两棵子树中,都适用。 题意就转换成了求n个数中任取两个数的最大异或值。这是个基本题型...原创 2018-08-14 20:47:52 · 257 阅读 · 0 评论 -
poj3630 Phone List(trie树)||(排序)(暴力)
题意 给出n个数,判断是否有数为另一个数的前缀。 题解1 排序+暴力比较 这个方法好简便。以字符串的形式记录下来,排序后,相邻两个字符串比较即可。时间复杂度O(nlogn)。 题解2 trie树 是前缀要考虑两种情况,有可能先是一个短位的数字A,再是一个长位的数字B。根据常识,B不可能是A的前缀。对于这种情况,在A数字的末尾做一个标记,如果由数字B从这个标记上经过,则A是B的...原创 2018-08-13 14:48:44 · 316 阅读 · 0 评论 -
bzoj1212 [HNOI2004]L语言(DP+AC自动机)
题目 求模式串对主串的最大匹配长度。 题解 DP+AC自动机 设f[i]=true表示前i位可以匹配出来,那么转移方案就是背包的,(要求:主串的后缀与模式串j完全一致),其中len[j]是一个模式串的长度。 如果要是大(bao)力DP的话,显然会很慢,因为我们要配对每一个模式串。 显然这种后缀配前缀的问题应当交由AC自动机来处理。 把匹配串逐一insert到字典树中,同时标记一下结尾,求一个...原创 2018-10-11 09:35:45 · 222 阅读 · 0 评论