随笔分类 -  { 字符串 { Trie图\AC自动机 } }

1
摘要:题目大概说有依次进行N个操作,每个操作可以是学习一个单词,或者读一个段落并求出段落里有多少个子串是已经学习的单词。 阅读全文
posted @ 2016-10-29 20:48 WABoss 阅读(581) 评论(0) 推荐(1) 编辑
摘要:题目大概说给一个主串和几个有价值的模式串,某个模式串与主串匹配就能累加对应的价值,一个模式串可以在多个位置和主串匹配但同一个位置只能一次,此外主串各个字符最多可以用x次,问如何匹配使获得的价值最大。 阅读全文
posted @ 2016-09-15 17:22 WABoss 阅读(786) 评论(0) 推荐(0) 编辑
摘要:题目大概说给几个字符串,每个字符串都有一个开心值,一个串如果包含一次这些字符串就加上对应的开心值,问长度n的串开心值最多可以是多少。 POJ2778。。复习下。。太弱了都快不会做了。。 这个矩阵的乘法定义是不同的,m[i][j]=max(m1[i][k]+m2[k][j]),即从i走到k能获得的最大 阅读全文
posted @ 2016-08-01 23:02 WABoss 阅读(362) 评论(0) 推荐(0) 编辑
摘要:题目这么说的: 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机。打字机上只有28个按键,分别印有26个小写英文字母和'B'、'P'两个字母。经阿狸研究发现,这个打字机是这样工作的: 例如,阿狸输入aPaPBbP,纸上被打印的字符如下:aaaab我们把纸上打印出来的字符串从1开始顺序编号, 阅读全文
posted @ 2016-04-19 10:41 WABoss 阅读(344) 评论(0) 推荐(0) 编辑
摘要:题目大概说有平面有n个点,从1点出发走到n点,每一步只能走到序号比当前更大的点且走的序列不能包含给定的m个序列中的任何一个,问1走到n的最短路。 用m个序列建个AC自动机,后缀包含整个序列的结点标记一下,然后用dp[u][S]表示走到u点且走的序列的后缀状态是自动机上第S个结点的最短路,这样在AC自 阅读全文
posted @ 2016-04-14 22:23 WABoss 阅读(294) 评论(0) 推荐(0) 编辑
摘要:题目大概说有个n×m的格子,有两种走法,每种走法都是一个包含D或R的序列,D表示向下走R表示向右走。问从左上角走到右下角的走法有多少种走法包含那两种走法。 D要走n次,R要走m次,容易想到用AC自动机上的DP解决: 用两种走法的序列构造AC自动机 dp[i][j][S][k]表示D用了i个R用了j个 阅读全文
posted @ 2016-04-13 16:40 WABoss 阅读(280) 评论(0) 推荐(0) 编辑
摘要:题目大概是给一个主串,询问若干个模式串出现次数,其中有些模式串要求不能重叠。 对于可以重叠的就是一个直白的多模式匹配问题;而不可重叠,在匹配过程中贪心地记录当前匹配的主串位置,然后每当出现一个新匹配根据记录的位置判断这个新匹配是否成立,最后更新位置。 另外,考虑到数据可以出现多个模式串相同的情况,实 阅读全文
posted @ 2016-04-05 08:42 WABoss 阅读(300) 评论(0) 推荐(0) 编辑
摘要:题目,求最短的包含所有n个DNA片段且不包含任何一个病毒片段的序列。 容易用所有DNA片段和病毒片段建一个AC自动机,构造fail时处理一下各个结点后缀是DNA或者病毒的情况,然后dp[S][u]表示包含DNA片段的集合是S的且后缀状态是自动机第u个结点的最短序列长度,然后顺着AC自动机避开病毒串转 阅读全文
posted @ 2016-03-18 21:13 WABoss 阅读(232) 评论(0) 推荐(0) 编辑
摘要:题目,求包含所有的给定的n个DNA片段的序列的最短长度。 AC自动机上的DP题。 阅读全文
posted @ 2016-03-16 22:45 WABoss 阅读(364) 评论(0) 推荐(0) 编辑
摘要:题目大概是给几个DNA片段,求构造一个长度n的字符串的方案数,要求这个字符串每个位置的字符都属于某个包含于此字符串的DNA片段。 把那些DNA片段建一个AC自动机。考虑状态的表示: dp[len][x][k]表示长度len且后缀状态为自动机结点x且后k位还不满足要求的方案数 然后转移就是向自动机上四 阅读全文
posted @ 2016-03-08 19:26 WABoss 阅读(519) 评论(0) 推荐(0) 编辑
摘要:给一个L*C字符矩阵和W个字符串,问那些字符串出现在矩阵的位置,横竖斜八个向。 就是个多模式匹配的问题,直接AC自动机搞了,枚举字符矩阵八个方向的所有字符串构成主串,然后在W个模式串构造的AC自动机上跑。 另外,temp指针的那个找遗漏后缀的过程执行时标记一下,下一次再到这个结点就不需要再进行一次t 阅读全文
posted @ 2016-03-05 12:07 WABoss 阅读(329) 评论(0) 推荐(0) 编辑
摘要:题目问长度m不包含一些不文明单词的字符串有多少个。 依然是水水的AC自动机+DP。。做完后发现居然和POJ2778是一道题,回过头来看都水水的。。。 dp[i][j]表示长度i(在自动机转移i步)且后缀状态为自动机第j个结点的合法字符串数 dp[0][0]=1 转移转移。。。 注意要用高精度,因为答 阅读全文
posted @ 2016-01-31 21:19 WABoss 阅读(317) 评论(0) 推荐(0) 编辑
摘要:题目是给一个DNA重新排列使其包含最多的数论基因。 考虑到内存大概就只能这么表示状态: dp[i][A][C][G][T],表示包含各碱基个数为ACGT且当前后缀状态为自动机第i的结点的字符串最多的数论基因数 其中ACGT可以hash成一个整数(a*C*G*T+c*G*T+g*T+T),这样用二维数 阅读全文
posted @ 2016-01-31 18:59 WABoss 阅读(256) 评论(0) 推荐(0) 编辑
摘要:题目是给几个带有价值的单词。而一个字符串的价值是 各单词在它里面出现次数*单词价值 的和,问长度不超过n的最大价值的字符串是什么? 依然是入门的AC自动机+DP题。。不一样的是这题要输出具体方案,加个字符数组记录每个状态最优情况的字符串即可。 另外题目字典序是先考虑长度再考虑每一位单词;特别要注意, 阅读全文
posted @ 2016-01-30 23:13 WABoss 阅读(212) 评论(0) 推荐(0) 编辑
摘要:题目大概是给几个DNA片段以及它们各自的权值,如果一个DNA包含某个片段那么它的价值就加上这个片段的权值,同时包含多个相同DNA片段也只加一次,问长度l的DNA可能的最大价值。 与HDU2825大同小异。 dp[i][j][S]表示长度i(自动机转移i步)、后缀状态为自动机第j个结点、包含的DNA片 阅读全文
posted @ 2016-01-30 19:22 WABoss 阅读(215) 评论(0) 推荐(0) 编辑
摘要:题目问长度n至少包含k个咒语的字符串有多少个。也是比较入门的题。。 dp[i][j][S]表示长度i(在自动机上转移k步)且后缀状态为自动机上第j个结点且当前包含咒语集合为S的方案数 dp[0][0][0]=1 还是用我为人人转移,AC自动机上的结点要多一个域表示这个结点所代表咒语前缀包含的咒语集合 阅读全文
posted @ 2016-01-30 11:15 WABoss 阅读(748) 评论(0) 推荐(0) 编辑
摘要:题目一串DNA最少需要修改几个基因使其不包含一些致病DNA片段。 这道题应该是AC自动机+DP的入门题了,有POJ2778基础不难写出来。 dp[i][j]表示原DNA前i位(在AC自动机上转移i步)且后缀状态为AC自动机结点j的最少需要修改的基因数 转移我为人人型,从dp[i][j]向ATCG四个 阅读全文
posted @ 2016-01-29 20:06 WABoss 阅读(321) 评论(0) 推荐(1) 编辑
摘要:与POJ2778一样。这题是求长度不超过n且包含至少一个词根的单词总数。 长度不超过n的单词总数记为Sn,长度不超过n不包含词根的单词总数记为Tn。 答案就是,Sn-Tn。 Sn=26+262+263+...+26n Tn=A+A2+A3+...+An (A为AC自动机构造出来的矩阵) 可以构造矩阵 阅读全文
posted @ 2016-01-29 16:24 WABoss 阅读(658) 评论(1) 推荐(1) 编辑
摘要:题目给m个病毒串,问不包含病毒串的长度n的DNA片段有几个。 感觉这题好神,看了好久的题解。 所有病毒串构造一个AC自动机,这个AC自动机可以看作一张有向图,图上的每个顶点就是Trie树上的结点,每个结点都可以看作是某个病毒串的前缀,Trie树的根则是空字符串。 而从根出发,在AC自动机上跑,经过k 阅读全文
posted @ 2016-01-28 17:57 WABoss 阅读(3601) 评论(0) 推荐(7) 编辑
摘要:AC自动机是一种多模式匹配的算法。大概过程如下:   而这题大概就是给几个模式串,一个主串,问有几个模式串被主串匹配。 AC自动机的模板题。有个可以优化的地方就是某个模式串被匹配了,下一次经过这儿就可以跳过了temp指针的过程了。   代码参考自kuangbin巨的博客,太简洁了(300+ms): 阅读全文
posted @ 2016-01-27 20:26 WABoss 阅读(281) 评论(0) 推荐(0) 编辑

1