首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
【AC自动机/fail树】BZOJ3172- [Tjoi2013]单词
】的更多相关文章
【AC自动机/fail树】BZOJ3172- [Tjoi2013]单词
[题目大意] http://www.lydsy.com:808/JudgeOnline/problem.php?id=3172 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. [思路] 第一次写fail树.首先建立AC自动机,对于路径上的每一个点sum++,表示出现的次数.fail指针指向的后缀,如果从fail指针指向的点开始方向建立fail树,其子树的sum之和就等于以它作为后缀的串的总数,相当于它在文章中出现的个数. *…
【学习笔记】ac自动机&fail树
定义 解决文本串和多个模式串匹配的问题: 本质是由多个模式串形成的一个字典树,由tie的意义知道:trie上的每一个节点都是一个模式串的前缀: 在trie上加入fail边,一个节点fail边指向这个节点所代表的前缀的最长后缀节点(除开自身的后缀): 也就是说如果x->y,那么y所代表的串是x所代表的串在trie上出现过的最大后缀: 例子 (黑边为trie,红边为fail) 以"hers","she","his","i"为…
BZOJ3172[Tjoi2013]单词——AC自动机(fail树)
题目描述 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. 输入 第一个一个整数N,表示有多少个单词,接下来N行每行一个单词.每个单词由小写字母组成,N<=200,单词长度不超过10^6 输出 输出N个整数,第i行的数字表示第i个单词在文章中出现了多少次. 样例输入 3 a aa aaa 样例输出 6 3 1 这道题题干真是言简意赅,看了半天愣是没看明白.为了防止有人也像我一样没看懂,在这里解释下题目及样例:文章由输入的几…
BZOJ 3172: [Tjoi2013]单词 [AC自动机 Fail树]
3172: [Tjoi2013]单词 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 3198 Solved: 1532[Submit][Status][Discuss] Description 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. Input 第一个一个整数N,表示有多少个单词,接下来N行每行一个单词.每个单词由小写字母组成,N<=200,单词长度不超过10^6…
BZOJ2905: 背单词 AC自动机+fail树+线段树
$zjq$神犇一眼看出$AC$自动机 $Orz$ 直接就讲做法了 首先对每个串建出$AC$自动机 将$fail$树找到 然后求出$dfs$序 我们发现一个单词 $S_i$是$S_j$的子串当且仅当$S_j$的某个前缀$T$通过$fail$树可以t跳到$S_i$的结束位置(感性理解一下,不太懂可以去找找特地讲$fail$树的博客) 我们记$f_i$为做到第$i$个串且$S_i$必选的最大值 则有 $f_i=max\{f_j+val[i]\}(j<i$ $\&\&$ $S_j$ 的结束点…
BZOJ 2905: 背单词 AC自动机+fail树+dfs序+线段树
Description 给定一张包含N个单词的表,每个单词有个价值W.要求从中选出一个子序列使得其中的每个单词是后一个单词的子串,最大化子序列中W的和. Input 第一行一个整数TEST,表示数据组数. 接下来TEST组数据,每组数据第一行为一个整数N. 接下来N行,每行为一个字符串和一个整数W. Output TEST行,每行一个整数,表示W的和的最大值. 数据规模 设字符串的总长度为Len 30.的数据满足,TEST≤5,N≤500,Len≤10^4 100.的数据满足,TEST≤10…
AC自动机 & Fail树 专题练习
Fail树就是AC自动机建出来的Fail指针构成的树. [bzoj3172][xsy1713]单词 题意 给定一些单词,求每个单词在所有单词里面的出现次数. 分析 构建Fail树,记录每个单词最后一个位置在Fail树上的位置. 每个单词访问的每个节点的\(has+1\). 然后在Fail树上进行树形dp. 每次询问,求对应位置的dp值. 核心代码 int n; char s[L]; int rt,tot; int loc[N]; struct Trie { int nx[A]; LL has;…
BZOJ2434 [Noi2011]阿狸的打字机 【AC自动机 + fail树 + 树状数组】
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 3610 Solved: 1960 [Submit][Status][Discuss] Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母. 经阿狸研究发现,这个打字机是这样工作的: l 输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在…
AC自动机fail树小结
建议大家学过AC自动机之后再来看这篇小结 fail树就是讲fail指针看做一条边连成的树形结构 fail指针在AC自动机中的含义是指以x为结尾的后缀在其他模式串中所能匹配的最长前缀的长度 所以在模式串中一定有sq[1~fa[x]]为sk[1~x]的子串 这个性质可以解决一些问题: 单词 显然,我们在插入时在沿着tire树走时,将遍历到的所有节点的val++ 最后我们的答案就是这个单词的结尾在fail树中的所有子树的val之和,因为之前的性质, 这个单词的fail树的子树节点中的所有节点,都意味着…
BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2545 Solved: 1419[Submit][Status][Discuss] Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母.经阿狸研究发现,这个打字机是这样工作的:l 输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在凹槽的最…