Kmp
2016
hdu 3374 String Problem (字符串的最小/大表示法+kmp)
hdu 3374 题目链接 题意:给出一个循环字符串,问最小表示出现的位置以及次数,最大表示出现的位置以及次数。 思路:之前只写过最小表示。。最大表示其实是一样的。。。把不等式方向变号即可。。。对于出现的次数。。。其实就等同于这个字符串是由几个子串组成。。。跑一遍kmp。。答案为len-nxt[len],1A
hdu 4300 Clairewd’s message (kmp)
hdu 4300题目链接
吐槽:题意难懂的一逼,关键的地方根本没有说清好么。。。竟然还是多校题。。。。出题人英语是体育老师教的吧。。?本来挺傻逼一道题。。被这完全没有说清楚的题意搞得很不爽。。。
hdu 3336 Count the string (nxt函数的运用kmp+(dfs|dp ))
hdu 3336 题目链接
题意:给一个字符串,问这个字符串的所有前缀的出现次数的和。
hdu 2594 Simpsons’ Hidden Talent (kmp)
hdu 2594 题目链接
题意:given string s1,s2, find the longest prefix of s1 that is a suffix of s2.
hdu 3746 Cyclic Nacklace (最小覆盖子串,kmp)
hdu 3746题目链接 题意:给定一个字符串,是一个环(首尾相连),问至少再添加多少个珠子才能使得整个串是循环的。。。
hdu 5763 || 2016 multi #4 1001 Another Meaning (kmp+dp)
hdu 5763 题目链接
题意:给定两个字符串A和B,每个出现在A中的B(可以overlap)都有两种含义,问A串一共可能有多少种含义。
hdu 1867 A + B for you again (kmp,最短的字符串a+b)
hdu 1867 题意 题意:给两个字符串,将两个字符串首尾拼接之后得到一个长度最短的字符串,求这个最短的字符串(一个串的前缀可能是另一个串的后缀,这样的话只出现一次就行了)
hdu 1841 Find the Shortest Common Superstring (kmp)
hdu 1841题目链接 题意:给两个字符串,问包含这两个字符串的最小的字符串的长度(最小是因为,一个串的子串可能是另一个串的后缀,这样出现一次就可以了)
poj 3080 Blue Jeans (n个字符串的最长公共子串,暴力+kmp)
poj 3080 题目链接
题意:给出n个字符串(n<=10),字符串长度不超过70,问出现在全部n个字符串中的最长并且字典序最小的长度大于等于3的子串。
poj 2185 Milking Grid (最小覆盖子矩形,kmp)
poj 2185 题目链接
题意:给出一个字符矩形,问一个面积最小的矩形,覆盖掉整个矩形。大概就是二维的最小覆盖子串。
KMP与最小覆盖子串
参考资料(本文大部分是参考这篇博客,附带一些证明步骤的解释) 首先明确一些概念: 最小覆盖子串:对于某个字符串s,它的最小覆盖子串指的是长度最小的子串p,p满足通过自身的多次连接得到q,最后能够使s成为q的子串。 比如: 对于s=“abcab”,它的最小覆盖子串p=“abc”,因为p通过在它后面再接上一个p(即重叠0个字符),可以得到q=“abcabc”,此时s是q的子串。 对于s=“ababab”,它的最小覆盖子串为p=“ab”。
poj 2406 Power Strings (后缀数组||kmp)
poj 2406
题意:给定一个字符串 L,已知这个字符串是由某个字符串 S 重复 R 次而得到的, 求 R 的最大值