之前看过几次后缀自动机,然后因为人太蠢都没看懂。最近重新填坑TAT。。。BZOJ4032: [HEOI2015]最短不公共子串建出后缀自动机和序列自动机,然后我们知道自动机上每一条路径都相当于一个子串(子序列),这样只要从根节点开始bfs一遍,找到A有而B没有的,那就是字典序最小的辣。#includ...
分类:
其他好文 时间:
2016-01-19 09:05:03
阅读次数:
189
题目最长公共子串给出两个字符串,找到最长公共子串,并返回其长度。样例给出A=“ABCD”,B=“CBCE”,返回 2注意子串的字符应该连续的出现在原字符串中,这与子序列有所不同。解题注意:子序列:这个序列不是在原字符串中连续的位置,而是有间隔的,如:ABCDE 和AMBMCMDMEM 最长公共子序列...
分类:
其他好文 时间:
2016-01-15 22:36:37
阅读次数:
262
最长公共子序列也是动态规划中的一个经典问题。有两个字符串 S1 和 S2,求一个最长公共子串,即求字符串 S3,它同时为 S1 和 S2 的子串,且要求它的长度最长,并确定这个长度。这个问题被我们称为 最长公共子序列问题。 与求最长递增子序列一样,我们首先将原问题分割成一些子问题,我们用 dp[i]...
分类:
其他好文 时间:
2015-12-09 23:07:02
阅读次数:
193
01背包问题我最初学会的解法是回溯法,第一反应并不是用动态规划算法去解答。原因是学习动态规划算法的时候,矩阵连乘、最长公共子串等问题很容易将问题离散化成规模不同的子问题,比较好理解,而对于01背包问题则不容易想到将背包容量离散化抽象出子问题,从情感上先入为主也误以为动态规划算法不是解决01背包问题的...
分类:
编程语言 时间:
2015-12-04 22:41:19
阅读次数:
297
第一问:对B串建立SAM,暴力枚举A的每个子串,在SAM上走,若失配则可行。第二问:设g[i][j]表示B串的第i个字符之后最早出现的字符j的位置,暴力枚举A的每个子串,按照g贪心地走,若失配则可行。第三问:对B串建立SAM,设f[i][j]表示考虑了A的前i个字符,当前在SAM上的状态为j的最小长...
分类:
其他好文 时间:
2015-12-02 06:32:13
阅读次数:
209
C++暴力搜索两个游标一个长度i遍历aj遍历blen遍历公共子串长度 1 class Solution { 2 public: 3 /** 4 * @param A, B: Two string. 5 * @return: the length of the lo...
分类:
其他好文 时间:
2015-12-01 14:28:03
阅读次数:
168
问题描述:Given 2 sequences, X = x1,...,xm and Y = y1,...,yn, find a common subsequence whose length is maximum. Subsequence need not be consecutive, but m...
分类:
编程语言 时间:
2015-11-23 13:13:45
阅读次数:
207
最长公共子序列(LCS,Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。而最长公共子串(要求连续)和最长公共子序列是不同的。设X(m)={x(1), x(2)...
分类:
其他好文 时间:
2015-10-26 00:37:29
阅读次数:
202
题目说明: 找两个字符串的最长公共子序列,这个子序列不要求在原字符串中是连续的,但要求顺序是一致的,比如"abcd"和"aebfc"的最长公共子串是"abc"。 程序代码: #include #include using namespace std; enum DirectionType { Typ...
分类:
编程语言 时间:
2015-10-20 19:17:44
阅读次数:
158
题目:输入字符串中对称的子字符串的最大长度。比如输入字符串“roorle”,由于该字符串里最长的对称子字符串是“roor”,因此输出4.思路:1、求字符串”roorle“和反序”elroor“的最长公共子串2、最长回文子串代码:1、最长公共子串#includeusing namespace std;...
分类:
编程语言 时间:
2015-10-09 21:14:37
阅读次数:
291