A6968. 论文查重
编程题
普及+/提高
知识点
题目描述
教务处最近怀疑有两名学生(学生 A 和学生 B)在期末论文中存在抄袭行为。你作为助教,拿到了这两名学生的论文原稿,它们分别表示为字符串 $A$ 和字符串 $B$(仅包含小写英文字母)。
为了量化抄袭的程度,我们定义两个片段(字符串)$C$ 和 $D$ 的**相似度得分** $S(C, D)$ 如下:
$$S(C, D) = 4 \cdot LCS(C, D) - |C| - |D|$$
其中:
- $LCS(C, D)$ 表示字符串 $C$ 和 $D$ 的**最长公共子序列**(Longest Common Subsequence)的长度。
- $|C|$ 和 $|D|$ 分别表示字符串 $C$ 和 $D$ 的长度。
教务处认为抄袭通常发生在论文的某些段落中,因此我们只关心原论文的**子串**(Substring)。
请你分别在 $A$ 中选取一个子串 $C$,在 $B$ 中选取一个子串 $D$,使得它们的**相似度得分** $S(C, D)$ 最大。
请输出这个最大的相似度得分。
**注意区分:**
- **子串 (Substring)**:必须是原字符串中连续的一段字符(例如 "bc" 是 "abcd" 的子串)。
- **子序列 (Subsequence)**:可以是原字符串中删除若干字符后剩下的序列,保持相对顺序但不一定连续(例如 "bd" 是 "abcd" 的子序列)。
为了量化抄袭的程度,我们定义两个片段(字符串)$C$ 和 $D$ 的**相似度得分** $S(C, D)$ 如下:
$$S(C, D) = 4 \cdot LCS(C, D) - |C| - |D|$$
其中:
- $LCS(C, D)$ 表示字符串 $C$ 和 $D$ 的**最长公共子序列**(Longest Common Subsequence)的长度。
- $|C|$ 和 $|D|$ 分别表示字符串 $C$ 和 $D$ 的长度。
教务处认为抄袭通常发生在论文的某些段落中,因此我们只关心原论文的**子串**(Substring)。
请你分别在 $A$ 中选取一个子串 $C$,在 $B$ 中选取一个子串 $D$,使得它们的**相似度得分** $S(C, D)$ 最大。
请输出这个最大的相似度得分。
**注意区分:**
- **子串 (Substring)**:必须是原字符串中连续的一段字符(例如 "bc" 是 "abcd" 的子串)。
- **子序列 (Subsequence)**:可以是原字符串中删除若干字符后剩下的序列,保持相对顺序但不一定连续(例如 "bd" 是 "abcd" 的子序列)。
输入格式
第一行包含两个正整数 $n$ 和 $m$ ($1 \leq n, m \leq 5000$),分别表示字符串 $A$ 和字符串 $B$ 的长度。
第二行包含一个长度为 $n$ 的字符串,表示学生 A 的论文。
第三行包含一个长度为 $m$ 的字符串,表示学生 B 的论文。
字符串均由小写英文字母组成。
第二行包含一个长度为 $n$ 的字符串,表示学生 A 的论文。
第三行包含一个长度为 $m$ 的字符串,表示学生 B 的论文。
字符串均由小写英文字母组成。
输出格式
输出一个整数,表示在所有可能的子串对 $(C, D)$ 中,能够获得的最大相似度得分。
输入输出样例
输入 #1
4 5 abba babab
输出 #1
5
输入 #2
8 10 bbbbabab bbbabaaaaa
输出 #2
12
输入 #3
7 7 uiibwws qhtkxcn
输出 #3
0
说明/提示
## 提示
### 样例 1 解释
从 $A$ 中选取子串 $C = \text{"abb"}$,从 $B$ 中选取子串 $D = \text{"abab"}$。
它们的最长公共子序列是 $\text{"abb"}$,长度为 3。
得分计算:$4 \times 3 - |3| - |4| = 12 - 3 - 4 = 5$。
### 数据范围
- 对于 $100\%$ 的数据:$1 \le n, m \le 5000$。
### 样例 1 解释
从 $A$ 中选取子串 $C = \text{"abb"}$,从 $B$ 中选取子串 $D = \text{"abab"}$。
它们的最长公共子序列是 $\text{"abb"}$,长度为 3。
得分计算:$4 \times 3 - |3| - |4| = 12 - 3 - 4 = 5$。
### 数据范围
- 对于 $100\%$ 的数据:$1 \le n, m \le 5000$。