随笔分类 - 字符串算法 -- Trie树
摘要:【Luogu3732】[HAOI2017]供给侧改革(Trie树) 题面 "洛谷" 给定一个纯随机的$01$串,每次询问$[L,R]$之间所有后缀两两之间的$LCP$的最大值。 题解 一个暴力的想法是构建$SA$之后把所有位置按照$rank$排序,每次询问相邻的两个$LCP$就行了,然后拿$set$
阅读全文
摘要:【BZOJ4477】[JSOI2015]字符串树(Trie树) 题面 "BZOJ" 题解 对于每个点维护其到根节点的所有字符串构成的$Trie$,显然可持久化一下就很好写了。 然后每次询问就是$u+v 2lca$,写个树剖维护$LCA$就好了。 cpp include include include
阅读全文
摘要:【BZOJ4260】Codechef REBXOR (Trie树) 题面 "BZOJ" 题解 两眼题。第一眼不会做,第二眼好简单。。。 前缀异或和一下,拿$Trie$树维护求一个在这个端点以左的最大值,右侧同理,取个最大值即可。 cpp include include include using n
阅读全文
摘要:【CF888G】Xor MST(最小生成树,Trie树) 题面 "CF" "洛谷" 题解 利用$Kruskal$或者$Prim$算法都很不好计算。 然而我们还有一个叫啥来着?$B$啥啥的算法,就叫$B$算法吧。 思想是对于每个点找到一条最小边,并且将这条边连上,不难证明每次至少连上了$n/2$个点。
阅读全文
摘要:【BZOJ2434】阿狸的打字机(AC自动机,树状数组) 先写个暴力: 每次打印出字符串后,就插入到$Trie$树中 搞完后直接搭$AC$自动机 看一看匹配是怎么样的: 每次沿着$AC$自动机走,在每一个节点都跳$fail$指针 如果有$x$串的末节点,就给答案$+1$ 这样的话没有必要存下每个串
阅读全文

浙公网安备 33010602011771号