#P1201. Problem A. 你说的对,但是这是签到 I

Problem A. 你说的对,但是这是签到 I

Problem A. 你说的对,但是这是签到 I

时间限制 : 1000 ms

空间限制 : 256 MB

题目背景

pzr 最近学习了后缀数组,知道了最长公共子串的 Θ(nlogn)\Theta(n\log n) 解法。

所谓 最长公共子串(Longest Common Substring, LCS) 问题,就是指求给定的一组字符串的最大的共有的子串的问题。例如字符串”abcb” 和 ”adbc”的最长公共子串就是”bc”。

用后缀数组的技巧求 s1s_1s2s_2 的最长公共子串时,先取未出现过的字符 '&' 作为分隔符,设 s=s1+&+s2s=s_1+'\&'+s_2。采用倍增算法求出 ss 的后缀数组 SA 和 Height 数组。 接下来二分枚举答案 AA,如果 AA 可行,则在 Height 数组中连续的一段 [i, j],对任意 k[i,j]k\in[i, j] 有 Height[k] >= A ,且 SA[k] 既有在 '&' 前的部分,又有在 '&' 后的部分。那么,总体的时间复杂度是 Θ(nlogn)\Theta(n\log n),其中 nn 是字符串的长度。

题目描述

如果长度为 nn 的字符串 s=s1s2sns=s_1s_2\cdots s_n 满足以下条件,则称它是 单调不减 的:

  • 对于 1i<n1\le i<n,有 sisi+1s_i\le s_{i+1}。这里是按照 ascii 码比较,即 'a' < 'b' < 'c' < ... < 'z'。

例如,"acos" , "abs" 和 "nnu" 是单调不减的,但 "sin" 和 "pzr" 不是。

给出仅由小写字母组成的 单调不减 的字符串 s,ts, t,求 sstt 的最长公共子串长度。

输入格式

包含两行。第一行一个字符串 ss,第二行一个字符串 tt

输出格式

仅一个非负整数,表示最长公共子串的长度。

样例输入1

aabbcdeee
abbcccee

样例输出1

4

样例1解释

a abbc deee

abbc ccee

最长公共子串为 abbc,长度为 44。可以证明无法找到更长的公共子串。

数据范围与约定

1s,t2×1051\le |s|, |t| \le 2\times 10^5sstt 仅由小写字母组成。

保证 sstt 是单调不减的。