题目大意:求n个串的最长公共子串
太久没写SAM了真是……
将第一个串建成后缀自动机,用其它的串进去匹配
每个节点记录每个串在上面匹配的最大长度
那么这个节点对答案的贡献就是所有最大长度的最小值
对所有贡献取最大就行了= = 这最大最小看着真是别扭
#include
#include
#include
#include
#define M 10100
using namespa...
分类:
其他好文 时间:
2015-03-09 22:36:25
阅读次数:
204
HDU 1403 Longest Common Substring(后缀数组啊 求最长公共子串 模板题)...
分类:
编程语言 时间:
2015-03-04 19:08:31
阅读次数:
161
最长公共子序列
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。
tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合...
分类:
其他好文 时间:
2015-02-27 17:09:36
阅读次数:
160
题意:给你n个的串,求出它们的最长公共子串,如果不存在这个子串,则输出“IDENTITY LOST”,如果存在多个最长公共子串,则输出字典序最小的那一个。
思路:二分枚举最长公共子串的长度,然后再枚举此长度的所有子串,找出字典序最小的解(不用二分直接暴力也能过)//400 KB 125 ms
#include
#include
#include
#include
using namespace...
分类:
其他好文 时间:
2015-02-17 22:26:17
阅读次数:
203
有两个字符串S1和S2,求一个最长公共子串,即求字符串S3,它们同时是S1和S2的子串,且要求它们的长度最长,并确定这个长度。这个问题我们称之为最长公共子序列问题。
与求最长递增子序列一样,我们首先将原问题分割成一些子问题,我们用dp[i][j]表示S1中前i个字符和S2中前j个字符分别组成的两个前缀字符串的最长公共子串长度。显然的,当i,j较小时我们可以直接给出答案,如dp...
分类:
编程语言 时间:
2015-02-12 16:22:43
阅读次数:
178
思路与前面的3080一样代码如下:#include
#include
#include
using namespace std;char str1[220],str2[220];
int next[220],n;
char ch[4400][220];void GetNext()
{
int j=0;
int len=strlen...
分类:
其他好文 时间:
2015-02-08 14:08:38
阅读次数:
200
最近在项目中碰到了这样的一个问题,要比较JS和CSS是否做了修改,先是想着借助第三方工具发现没找到,后面转念一想,这个问题不就是对两个文件的第一行求最大的公共子串嘛,既然是要求公共子串的最大长度,由此想到了动态规划算法。代码是从网上C++改写过来的,感谢那位C++的兄弟,代码如下:package d...
分类:
编程语言 时间:
2015-02-04 10:58:32
阅读次数:
197
题意: 给定m个串,让你找出它们的最长公共子串
思路: 先二分串的长度,枚举该长度的串(可以从第一个串里找),看该长度是否合法,(就是用这个长度的所有串去匹配给定的 第 2 - m 个串 为提高效率,用kmp)然后得到一个最大长度,再在该长度下寻找一个字典序最小的解即可
POJ3450代码(3080类似)
/**********************************...
分类:
其他好文 时间:
2015-02-02 23:16:32
阅读次数:
218
/*
最少需要补充的字母数 = 原序列S的长度 — S和S'的最长公共子串长度
*/
# include
# include
# include
# include
using namespace std;
int dp[2][5010];///滚动数组
int main()
{
char a[5010];
char b[5010];
int i,j,k,len;...
分类:
编程语言 时间:
2015-02-02 16:01:38
阅读次数:
168
一、什么是最长公共子序列
什么是最长公共子序列呢?举个简单的例子吧,一个数列S,若分别是两个或多个已知序列的子序列,且是所有符合条件序列中最长的,则S称为已知序列的最长公共子序列。
举例如下,如:有两个随机数列,1 2 3 4 5 6 和 3 4 5 8 9,则它们的最长公共子序列便是:3 4 5。
一直不明白:最长公共子串和最...
分类:
其他好文 时间:
2015-02-02 12:39:26
阅读次数:
137