题意,给出两个字符串,给一个k,求出满足a的字串与b的子串完全一样的长度 =k的所有情况的数量。 翻译一下题意就是求所有后缀中,lcp =k的即可。 我们拼接两个字符串,中间用不出现的字符隔开即可。 然后就是如何求解的问题。 我们知道lcp(i,j)=min(height[i+1],....,hei ...
分类:
编程语言 时间:
2019-12-03 23:10:23
阅读次数:
66
题意 给定两个字符串,求长度大于等于k的公共子串数。 分析 将两个字符串中间加个特殊字符拼接,跑后缀数组。 将题目转化为对每一个后缀求$\sum_{j=1}^{i 1}lcp(i,j)$,且后缀$i$和$j$属于不同字符串。 由于$lcp$只跟$h$数组的区间最小值有关,因此对于单调递减的$h[i] ...
分类:
其他好文 时间:
2019-08-25 21:36:42
阅读次数:
102
A substring of a string T is defined as: T( i, k)= TiTi +1... Ti+k -1, 1≤ i≤ i+k-1≤| T|. Given two strings A, B and one integer K, we define S, a set ...
分类:
其他好文 时间:
2019-05-18 17:12:43
阅读次数:
117
http://poj.org/problem?id=3415 给定两个字符串A 和B,求长度不小于k 的公共子串的个数(可以相同)。 论文题,和上道题(POJ2774)类似,首先想到现将AB串合并,然后子串可以表示成字符串后缀的前缀,于是我们比较任意两个A后缀和B后缀,用height求出他们的公共子 ...
分类:
其他好文 时间:
2018-02-24 23:03:58
阅读次数:
247
http://poj.org/problem?id=3415 (题目链接) 题意 给定两个字符串 A 和 B,求长度不小于 k 的公共子串的个数(可以相同)。 Solution 后缀数组论文题。。。 基本思路是计算 A 的所有后缀和 B 的所有后缀之间的最长公共前缀的长度,把最长公共前缀长度不小于 ...
分类:
其他好文 时间:
2017-01-13 10:10:31
阅读次数:
242
这题曾经用sam打过,现在学sa再来做一遍。 基本思路:计算A所有的后缀和B所有后缀之间的最长公共前缀。 分组之后,假设现在是做B的后缀。前面的串能和当前的B后缀产生的公共前缀必定是从前往后单调递增的,每次与h[i]取min时必定将栈尾一些长的全部取出来,搞成一个短的。 所以就开一个栈,栈里存的是长 ...
分类:
编程语言 时间:
2016-09-28 22:03:44
阅读次数:
227
Common SubstringsTime Limit: 5000MSMemory Limit: 65536KTotal Submissions: 8748Accepted: 2899DescriptionA substrin...
分类:
编程语言 时间:
2015-11-29 19:33:16
阅读次数:
244
题意: 求长度大于等于K的公共子串的个数。位置不同就算不同。后缀数组求依次SA LCP, 然后就是统计答案了, 暴力统计n^2复杂度显然不可以, 我们可以利用lcp数组的"部分单调性", 用一个栈,栈中保存小于等于当前lcp的原数组的下标,两次统计, 第一次统计, 按B串统计, 把A串大于等于K的那...
分类:
编程语言 时间:
2015-08-07 22:03:51
阅读次数:
125
Description
A substring of a string T is defined as:
T(i, k)=TiTi+1...Ti+k-1, 1≤i≤i+k-1≤|T|.
Given two strings A, B and one integer K, we define S, a set of triples (i, j, k):
S = {(i, j, ...
分类:
编程语言 时间:
2015-06-07 23:41:18
阅读次数:
391
题意:
给两个串,问有多少长度大于等于K的公共子串(位置不同也算一对)
题解:
后缀自动机DP
对第一个串建立后缀自动机,然后做一些预处理,
然后拿第二个串在后缀自动机上跑,到每个节点加一次贡献。
但是这样需要每个点往parent树上跑一遍,会TLE,所以可以加个lazy。
然后代码中有两次运用到拓扑序来从子向父推DP值。
呃,说得乱糟糟的。
Orz No_stop
不...
分类:
其他好文 时间:
2015-01-14 15:35:14
阅读次数:
209