A6968 | 论文查重
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
教务处最近怀疑有两名学生(学生 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$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?