据说这些并不对劲的内容是《信息学奥赛一本通提高篇》的配套练习。 并不会讲Trie树。 1.poj1056-> 模板题。 2.bzoj1212-> 设dp[i]表示T长度为i的前缀能否被理解。这样,对于所有满足T[(x+1)...i]是一个字典中的单词的x,dp[i]|=dp[x]。 所以,就可以将所 ...
分类:
其他好文 时间:
2018-07-18 16:58:33
阅读次数:
179
Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的。现在你要处理的就是一段没有标点的文章。 一段文章T是由若干小写字母构成。一个单词W也是由若干小写字母构成。一个字典D是若干个单词的集合。 我们称一段文章T在某个字典D下是可以被理解的,是指如果文章T可以被分成若干部分 ...
分类:
编程语言 时间:
2018-02-05 12:34:27
阅读次数:
130
题面 "传送门" Sol 先建立AC自动机,trie树上每个字符串结束的位置记录下它的长度$len$ 设$f[i]$表示前$i$个字符是否被翻译 在AC自动机上匹配,跳$fail$转移,该点为$x$,则$f[i]$由$f[i len[x]]$转移而来 ~~太菜了不会trie的暴力~~ include ...
分类:
编程语言 时间:
2018-01-19 15:43:31
阅读次数:
172
【BZOJ1212】L语言(AC自动机) 题面 "BZOJ" 题解 很自然的,既然要匹配单词,那就全部都丢到$AC$自动机里面去 现在想想怎么匹配 先是$AC$自动机正常的匹配 如果此时这个位置能够匹配上一个串 我们就需要判断一下这个串覆盖到这个文本串中 它的前一位是否恰好被覆盖 如果有的话 我们也 ...
分类:
编程语言 时间:
2018-01-18 22:09:52
阅读次数:
198
http://www.lydsy.com/JudgeOnline/problem.php?id=1212 建好AC自动机在Tire树上进行DP dp[i]|=dp[i-tr[tmp].len] 找到dp[1]==1的max{i} ...
分类:
其他好文 时间:
2017-12-11 14:23:10
阅读次数:
103
Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的。现在你要处理的就是一段没有标点的文章。 一段文章T是由若干小写字母构成。一个单词W也是由若干小写字母构成。一个字典D是若干个单词的集合。 我们称一段文章T在某个字典D下是可以被理解的,是指如果文章T可以被分成若干部分 ...
分类:
编程语言 时间:
2017-06-16 20:14:54
阅读次数:
154
Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的。现在你要处理的就是一段没有标点的文章。 一段文章T是由若干小写字母构成。一个单词W也是由若干小写字母构成。一个字典D是若干个单词的集合。 我们称一段文章T在某个字典D下是可以被理解的,是指如果文章T可以被分成若干部分
分类:
编程语言 时间:
2016-02-26 23:19:48
阅读次数:
203
枚举每个文章里已经在Trie中被标记为可能是分割处的字符,然后再从此处跑Trie,继续向后标记。由于单词数很少,因此复杂度可以接受,O(n*m*Len)。#include#includeusing namespace std;int n,m,L;char s[1024*1024+100];int c...
分类:
编程语言 时间:
2015-03-02 18:29:44
阅读次数:
170
题目大意:给定一个单词表和m个字符串 问每个字符串的最长的前缀,满足这个前缀可以拆分成一些字符串 使这些字符串都在单词表中出现过
再也不敢看错数据范围了……一道明明用Trie树能解决的问题居然被我写了AC自动机……
将单词表中的单词全都插入AC自动机 每个单词所在的节点记录这个单词的长度
然后对于每个字符串 用f[i]表示长度为i的前缀是否能拆分成单词表中的单词 跑AC自动机
对于每个匹配...
分类:
编程语言 时间:
2014-11-19 01:30:12
阅读次数:
182