KMP
文章平均质量分 77
AC_Arthur
Die luft der Freiheit weht
展开
-
HDU 2203 亲和串 (KMP)
最近看了看KMP算法,发现其状态转移图构造的十分巧妙,通过递推计算出返回的地方,以降低时间复杂度。 该题就是一个KMP裸题,不过该题可以循环 移位,那么不妨我们将s1扩充成原来的两倍就行了,但是这样要实现判断两个串的大小,不然扩充后的s1有可能匹配上一个比它长的s2 。 细节参见代码: #include #include #include #include #include #inclu原创 2015-09-23 21:21:07 · 603 阅读 · 0 评论 -
HDU 1238 Substrings(KMP)
该题可以用KMP,但是看网上很多人都是直接暴过去的,好像也差不了多少,可见数据之水。 找到所给字符串中对短的串,枚举其子串的首尾下标,然后取出来作为子串然后对每一个串做KMP,因为其逆序也可以,所以也要将其逆序单独取出来。 细节参见代码: #include #include #include #include #include #include #include #include #incl原创 2015-09-24 15:44:41 · 739 阅读 · 0 评论 -
HDU 4763 Theme Section(KMP)
题目链接:点击打开链接 题意:给你一个字符串s, 要你求是否存在一个子串, 在s的前中后各出现一次。 求最大可能的子串长度。 思路:KMP变形, 我们首先要了解KMP的运行机制。 核心是失配函数f, f[i]表示在i点失配之后返回到f[i]这个点, 且能保证f[i]之前的部分和模板串匹配。 这样的话, 我们就可以利用这个特点来处理该题了。 我们假设在最后一个字符处失配, 那么它将返回f[l原创 2016-03-18 21:24:28 · 1106 阅读 · 0 评论 -
HDU 4300 Clairewd’s message(KMP)
题目链接:点击打开链接 题意:给你一个26个字母的转换表, 把'a'转换成第一个字母, 把'b'转换成第二个......以此类推。 第二行给你一个密文+明文的串, 并且明文有可能不完整, 让你求明文最小的可能解。 思路:思路不是很难想, 就是把密文转换成明文, 然后从中间开始对原串进行KMP, 直到最后一个字符时返回匹配的长度。 然后这个匹配的长度就是最短的明文长度。 细节参见代码原创 2016-03-22 17:02:16 · 1050 阅读 · 0 评论 -
HDU 3689 Infinite monkey theorem(KMP + DP)
题目链接:点击打开链接 思路: 用d[i][j]表示前i个字符,已经匹配了字母中的j个字符,最终包含这个字母的概率。 每次转移的时候有n个方向, 表示第i个字符选哪个字符, 那么有个问题, 如果我当前选的这个字符失配了, 那么转移之后我还匹配了多少个字符。 这恰恰是KMP能做的。 细节参见代码: #include #include #include #include #inclu原创 2016-08-03 20:02:09 · 646 阅读 · 0 评论