
Trie
Chester_King
虽千万人,吾往矣。
展开
-
【hihocoder】1014 Trie树
题目传送门今天学一发Trie树,为了接下来的AC自动机做准备。Trie树好像还是挺重要的,经常有题目的优化需要用到Trie树,比如说一些异或的题目。其实Trie树还是挺好理解的,就是把一个字符串放到一棵树上,每一个叶节到根节点的路径都表示一个字符串原创 2017-07-31 21:39:51 · 217 阅读 · 0 评论 -
【洛谷】3808 【模板】AC自动机(简单版)
题目传送门终于看懂啦!终于学会了AC自动机啦!(Flag立起)写篇博客梳理一下自己的思路吧。在文章的开头,必须先放上一些大佬的博客来压压场面:我选的当然是ZZK大佬,神犇传送门然而AC自动机的原理其实是比较好理解的,就是把Trie树和KMP的思想结合起来。这么说起来KMP就是单个字符串的AC自动机啊。(雾)给出许多模式串,把这些字符串都加入到Trie树中,在每个字符串结尾的叶子节点原创 2017-08-01 13:57:39 · 644 阅读 · 0 评论 -
【洛谷】3796 【模板】AC自动机(加强版)
题目传送门这题嘛,就是一个AC自动机的模板。主要是巩固一下今天学的AC自动机。在构造Trie树的时候在每一个字符串结尾的叶节点上标记一下该节点属于第几个字符串,然后对文本串跑一边AC自动机,对每一个经过的节点计数一下。然后把每一个模式串按计数从大到小sort一下,第一个模式串的计数就是答案,然后向后枚举和答案相同的模式串即可。附上AC代码:#include #include原创 2017-08-01 20:22:39 · 356 阅读 · 0 评论 -
【BZOJ】1212 [HNOI2004]L语言 Trie
题目传送门这题连AC自动机都省略了,直接把所有模式串插入Trie树中,然后对于每个文本串,暴力枚举当前节点以后的子串是否在Trie树中存在。因为这题的模式串长度不大于10,n和m都不大于20,所以暴力枚举就可以轻松水过。附上AC代码:#include #include using namespace std;int n,m,c[2010][26],size,f[100001原创 2017-08-01 20:49:09 · 221 阅读 · 0 评论 -
【BZOJ】1030 [JSOI2007]文本生成器 AC自动机+DP
题目传送门经过这道题的练习,我对AC自动机有了更加深刻的理解:怎么计算AC自动机需要的数组大小。(话说为什么我以前不会?大概是以前太瓜皮了吧……)这题的题目大意就是让我们求构成长度为m的文本串,且文本串内至少包含一个模式串的方案总数。我们可以用集合的思想,把题目转化成构成长度为m的文本串的方案数减去构成长度为m的文本串中不包含任意一个模式串的方案数。然后考虑AC自动机,我们把每原创 2017-08-01 22:06:19 · 292 阅读 · 0 评论 -
【HDU】4787 GRE Words Revenge 二进制分组+AC自动机
题目传送门orz Manchery多次询问可以按时间分治,但可惜这题强制在线。因而引入了二进制分组,就是把当前字符串的数量二进制拆分。比如说当前有10个字符串,就把这10个字符串分成一组8个和一组2个。这样每个字符串最多被重构AC自动机log2n\log_2n,一种优美的暴力二进制分组适用于那些不支持修改的数据结构,AC自动机算一例,凸包也是。附上AC代码:#i原创 2018-01-15 21:08:09 · 462 阅读 · 0 评论