问题 6509 --最多金币数

6509: 最多金币数★★★

时间限制: 1 Sec  内存限制: 256 MB
提交: 14  解决: 5
[提交][状态][命题人:]

题目描述

    小明晚上做了一个梦,梦里他得到了两个字符串S和T,如果小明从S串中截取一个子串A、从T串中截取一个子串B,那么他能得到的金币数量Money = 4*LCS(A, B) - |A| - |B|.小明想获得最多的金币,但他不知道该怎么截,你能帮帮他吗?

    注意:

    LCS(A,B)的意思是:字符串A和字符串B的最长公共子序列的长度

    如果X是一个字符串,|X|的意思是字符串X的长度

输入

第一行给出两个正整数n和m(1 <= n, m <= 5000),表示字符串S和字符串T的长度.

第二行给出一个长度为n的字符串S.

第三行给出一个长度为m的字符串T.

输出

输出小明能获得的最多的金币数.
样例输入
Copy
4 5
abba
babab
样例输出
Copy
5

提示

对于上述样例,我们从S串中截取abb,从T串中截取abab,此时LCS(abb, abab) = 3

小明获得的金币数Money = 4*LCS(abb,abab) - |abb| - |abab| = 4 * 3 - 3 - 4 = 5

来源

[提交][状态]