【POJ 1159】Palindrome最近各种题各种奇葩思路已经司空见惯了。。。又新出个滚动数组= =
该题还有一点需要知道
最少需要补充的字母数 = 原序列S的长度 — S和S’的最长公共子串长度
然而窝原本并不知道……然后写出了一个奇葩dp做法 居然比LCS快0.0我的思路是从左往右遍历 每个字符从右往左遍历到他的后一位置 dp数组标记当前位置往右对应匹配字符串左半边的最长序列长度的...
分类:
其他好文 时间:
2015-08-17 15:34:07
阅读次数:
196
题目链接:点击进入
大概的题意就是给n个字符串,然后让我们找出他们的最长的公共子串。
因为题目的数据比较小,我们可以枚举第一个串的所有子串,然后再用KMP判断一下这个子串是否出现在其它字符串中。代码如下:#include
#include
#include
using namespace std;const int maxn=100;///x...
分类:
其他好文 时间:
2015-08-16 12:27:35
阅读次数:
147
题目大意:给你N个串,求出来他们的最大公共子串的长度(子串反过来也算他们的子串)。分析:很久以前就做过这道题,当时是用的strstr做的,不过相同的都是枚举了子串......还是很暴力,希望下次遇到类似的题目我已经掌握高效的方法了。==================================...
分类:
其他好文 时间:
2015-08-15 18:15:59
阅读次数:
97
题目大意:有M个串,每个串的长度都是60,查找这M个串的最长公共子串(连续的),长度不能小于3,如果同等长度的有多个输出字典序最小的那个。分析:因为串不多,而且比较短,所致直接暴力枚举的第一个串的所有子串,比较暴力的做法,如果串的长度大一些就没法玩了。代码如下:===================...
分类:
其他好文 时间:
2015-08-15 10:12:31
阅读次数:
117
给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如,query为
"acbac",text为"acaccbabb",那么text中的"cba"为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3。
int getLongestSubString(char* query, char* tex...
分类:
其他好文 时间:
2015-08-14 21:33:18
阅读次数:
246
spoj 1811 LCS - Longest Common Substring
题意:
给出两个串S, T, 求最长公共子串。
限制:
|S|, |T|
思路:
dp O(n^2) 铁定超时
后缀数组 O(nlog(n)) 在spoj上没试过,感觉也会被卡掉
后缀自动机 O(n)
我们考虑用SAM读入字符串B;
令当前状态为s,同时最大匹配长度为len;...
分类:
其他好文 时间:
2015-08-14 21:29:35
阅读次数:
121
spoj 1812 LCS2 - Longest Common Substring II
题意:
给出最多n个字符串A[1], ..., A[n], 求这n个字符串的最长公共子串。
限制:
1
|A[i]|
思路:
和spoj 1811 LCS差不多的做法
把其中一个A建后缀自动机
考虑一个状态s, 如果A之外的其他串对它的匹配长度分别是a[1], a[2],...
分类:
其他好文 时间:
2015-08-14 21:28:39
阅读次数:
233
问题描述: 给定两个序列 X=, Y,求X和Y长度最长的公共子串。(子串中的字符要求连续) 这道题和最长公共子序列(Longest common subsequence)很像,也可以用动态规划定义。公式如下:这里c[i,j]表示以Xi,Yj结尾的最长公共子串的长度。程序实现:int longes.....
分类:
其他好文 时间:
2015-08-12 21:13:28
阅读次数:
142
// poj 2774 Long Long Message 后缀数组
//
// 题目大意:
//
// 求两个串的最长公共子串.
//
// 解题思路:
//
// 后缀数组.将两个字符串用一个不出现在两个字符串的其他字符连接,并在最后
// 同样用一个字符作为结束.一个串的子串,一定是某个后缀的前缀.求出height数组
// height[i]表示sa[i-1]和sa[i]的公共前缀L...
分类:
编程语言 时间:
2015-08-10 16:12:56
阅读次数:
166
题意: 求长度大于等于K的公共子串的个数。位置不同就算不同。后缀数组求依次SA LCP, 然后就是统计答案了, 暴力统计n^2复杂度显然不可以, 我们可以利用lcp数组的"部分单调性", 用一个栈,栈中保存小于等于当前lcp的原数组的下标,两次统计, 第一次统计, 按B串统计, 把A串大于等于K的那...
分类:
编程语言 时间:
2015-08-07 22:03:51
阅读次数:
125