AC自动机
Hanks_o
一名。
展开
-
hdu2222Keywords Search,caioj1464(AC自动机模板)
题目传送门 题意: 有n(n求出这句话包括几个单词 。 注意:一个单词重复出现,只算作出现了一个单词,如果有多个重复的单词,那么重复单词应该计算多次 比如有两个单词,ab,ab(可以重复) 那么如果句子里有ab这个单词,那么出现了两个单词。 如果只有一个单词是ab。 那么句子里有abab这个东西的话只算做出现一个单词。解法: AC自动机模版。 这里算是一个详细的模版介绍了。原创 2017-09-23 16:45:21 · 305 阅读 · 0 评论 -
poj1204Word Puzzles,caioj1465地图匹配(AC自动机+搜索)
题目传送门 题意: 给出有一个L*C的字符地图,地图的行与列都从0开始编号 然后给出一些字符串,求出这些字符串在字符地图上第一次出现的坐标 输出字符串第一个字母的坐标和字符串的方向 字符串的方向是指字符串的走向 A表示正北,B表示东北,C表示正东,D表示东南,E表示正南,F表示西南,G表示正西,H表示西北 且保证字符串的方向是固定的。好题!绝对的好题!解法: 每一个字符串去建字典树。原创 2017-09-23 09:37:54 · 340 阅读 · 0 评论 -
bzoj1030: [JSOI2007]文本生成器(AC自动机+Dp)
题目传送门 好题啊。解法: 直接求很麻烦。 所以转化为总方案减去不合法的方案。 那么不合法的方案就相当于在字典树上面没有经过结尾节点的路径条数。 那么用f[i][j]表示走i步到了第j个节点的方案数。 对应的它下一步走到k。那么f[i+1][k]+=f[i][j]。 但是会出现一个问题。就是。 比如说两个串。 abcd cdef那么当我们匹配了cd的时候其实应该可以原创 2018-02-01 10:37:46 · 272 阅读 · 0 评论