随笔分类 -  AC自动机

摘要:题意:将匹配的串用‘*’代替 tips: 1 注意内存的使用,据说g++中指针占8字节,c++4字节,所以用g++交会MLE 2 注意这种例子, 12abcdbcabc 故失败指针要一直往下走,否则会丢弃一些串 3 当出现非英文字符时应先将指针指向根节点,否则出现 11cyc,,,,,,,y 时结果 阅读全文
posted @ 2016-11-05 20:49 vwirtveurit 阅读(262) 评论(0) 推荐(0)
摘要:曾写过迭代加深搜索的方法,现在使用在AC自动上跑最短路的方法 dp[i][j]表示状态为到节点i,模式串是否包含的状态为j的最短串的长度,则状态转移方程为: dp[nx][ny] = min(dp[x][y] + 1) , 其中nx为x后继结点,ny为从y转移过来的新状态,更新时加入队列 阅读全文
posted @ 2016-08-28 19:26 vwirtveurit 阅读(280) 评论(0) 推荐(0)
摘要:dp[i][j]表示行走i步到达j的最大值,dps[i][j]表示对应的串 状态转移方程如下: dp[i][chi[j][k]] = min(dp[i - 1][j] + sum[chi[j][k]]) 阅读全文
posted @ 2016-08-27 16:44 vwirtveurit 阅读(319) 评论(0) 推荐(0)
摘要:给定N个长度不超过20的模式串,再给定一个长度为M的目标串S,求在目标串S上最少改变多少字符,可以使得它不包含任何的模式串 建立Trie图,求得每个节点是否是不可被包含的串,然后进行DP dp[i][j]表示在Trie图上行走i步到达节点j的要修改的最小次数,则 dp[i + 1][chi[j][k 阅读全文
posted @ 2016-08-26 16:52 vwirtveurit 阅读(306) 评论(0) 推荐(0)
摘要:先使用AC自动机求得状态转移关系,再建立矩阵,mat[i][j]表示一步可从i到j且i,j节点均非终止字符的方案数,则此矩阵的n次方表示n步从i,到j的方法数。 阅读全文
posted @ 2016-08-26 11:24 vwirtveurit 阅读(231) 评论(0) 推荐(0)