SPOJ1812 LCS2 题意:给n个串,求最长公共子串 做法:对第一个串建$SAM$,拿剩余的串类似于求$LCS$的在上面跑,对于当前这个串,求出可以到达每个状态的最长子串长度,然后,每个状态对每个串的匹配取最小值,最后取最大值就是答案。现在考虑如何求到达每个状态的最长子串长度,我们先类似于求$ ...
分类:
其他好文 时间:
2018-12-30 22:12:36
阅读次数:
218
看过好多人的博客,感觉要么是太复杂要么就是太不容易理解。 那就亲自动手写一个通俗易懂的。 先定义两个数组,第一个数组为主,用第二个数组来匹配第一个,看能有多少可以对应上的。 所以,其实第一个数组的内容可以暂时不考虑,当知道它对应了第二个数组的哪个数字就BINGO了。 顺着这个思路继续想就可以得到以下 ...
分类:
其他好文 时间:
2018-12-08 14:04:34
阅读次数:
140
1 什么是OPC协议? 为了便于自动化行业不同厂家的设备和应用程序能相互交换数据,定义了一个统一的接口函数,就是OPC协议规范。有了OPC就可以使用统一的方式去访问不同设备厂商的产品数据。 OPC基金会前前后后规定了不同的接口定义,如下: ? OPC DA (Data Access, exchang ...
分类:
其他好文 时间:
2018-12-04 11:34:25
阅读次数:
901
Given two sequences of characters, print the length of the longest common subsequence of both sequences. Sequence 1: &nb ...
分类:
其他好文 时间:
2018-12-02 19:20:57
阅读次数:
225
Longest Common Subsequence "Aizu ALDS1_10_C" For given two sequences X and Y, a sequence Z is a common subsequence of X and Y if Z is a subsequence of ...
分类:
其他好文 时间:
2018-12-01 11:12:55
阅读次数:
194
典型DP题,思路上和 LCS 很像。 dp[i][j] 表示word1前i个 word2前j个 所需的最小操作数。 base case: dp[i][0]=i, dp[0][j]=j. 需要额外注意这里的base case。 dp[i][j] = dp[i-1][j-1] if word1[i-1] ...
分类:
其他好文 时间:
2018-11-29 23:19:02
阅读次数:
185
int LCS(char *a,char *b) { if(a==NULL || b==NULL) return 0; int len_a = strlen(a); int len_b = strlen(b); int f[M][N]; for(int i=1;i f[i-1][j] ? f[i][... ...
分类:
其他好文 时间:
2018-11-24 20:59:05
阅读次数:
144
f[i][j] 一定是 f[i-1][j] 和 F【i】[j-1] 转移过来的。 如果 把 a 串 看成字符数组 s1[], b 串 看成 s2[] ; 则: 如果 s1[i]!=s2[j] 那么 从 f[i-1][j] 和 f[i][j-1] 取一个最大值 记录到 F【i] [j]. 代码如下: ...
分类:
编程语言 时间:
2018-11-24 14:31:59
阅读次数:
200
这个算法跟LCS 差不多 偷笑 LCS算法链接:https://www.cnblogs.com/wangshengjun/p/LCS.html 这里的f i j 是由 F[i-1[j-1] +1 转移过来的 因为要特判,只要两个串不相等直接等于0。 如果 把 a 串 看成字符数组 s1[], b 串 ...
分类:
其他好文 时间:
2018-11-24 14:28:23
阅读次数:
188
首先只有lcp(i,j)需要考虑 因为SAM的parent树是后缀的前缀的最长公共后缀(……),所以把这个串倒过来建SAM,这样就变成了求两个前缀的最长公共后缀,长度就是这两个前缀在parent树上的lcs对应的最大长度dis 这里用treedp解决即可,就是合并一下size cpp include ...
分类:
其他好文 时间:
2018-11-23 22:28:49
阅读次数:
226