[POJ3691 DNA repair]AC自动机、动态规划 发布者:edward_mj 19 6 月, 2010 [POJ3691 DNA repair]AC自动机、动态规划有 5 条评论 【题目大意】 给定N个串,再给定一个主串,问将主串改为不含这个N个串为子串的串,至少需改动多少个字母? 【算法分析】 嗯,我又在刷水题。。。 就是建一个AC自动机(DFA)。 然后用F[i,j]表示已处理串长为i,然后在自动机中的状态j,至少要改动多少个字母。 转移就是用自动机啦。 【其它】 1Y 注意如果自动机中的next结点有终结标记,自己也应当标为终止。 【CODE】 #include
好快啊……
回复zbwmqlw:是说什么好快= =。这个程序是很慢的。。。自动机的转移有一个优化我没有加上。。。
回复edward_mj:我问一下 AC 自动机这里的优化指的是什么,可以给个代码实例一下吗 743684079@qq.com
回复Legend_Ni:就是对每个状态假如接收到某个字符会跳到哪里加个预处理。这样就不需要多次next了。
回复edward_mj:不过这里的 AC 自动机貌似没有用到虚节点,貌似用了虚节点的自动机会快点的