小 A 最近一直在找自己的爸爸,用什么办法呢,就是 DNA 比对。
小 A 有一套自己的 DNA 序列比较方法,其最终目标是最大化两个 DNA 序列的相似程度,具体步骤如下:
那么最终两个序列的相似程度就是所有的 d(x,y)d(x,y)d(x,y) 加上所有的极长空格段的相似程度之和。
现在小 A 通过某种奥妙重重的方式得到了小 B 的 DNA 序列中的一段,他想请你帮他算一下小 A 的 DNA 序列和小 B 的 DNA 序列的最大相似程度。
输入第 111 行一个字符串,表示小 A 的 DNA 序列。
输入第 222 行一个字符串,表示小 B 的 DNA 序列。
接下来 444 行,每行 444 个整数,用空格隔开,表示 ddd 数组,具体顺序如下所示。
最后一行两个用空格隔开的正整数 A,BA,BA,B,意义如题中所述。
输出共一行,表示两个序列的最大相似程度。
ATGG
ATCC
5 -4 -4 -4
-4 5 -4 -4
-4 -4 5 -4
-4 -4 -4 5
2 1
4
对于所有测试点,有 00<B<A≤1000,−1000≤d(x,y)≤1000,d(x,y)=d(y,x),序列只包含 {A,T,G,C}\{\text{A},\text{T},\text{G},\text{C}\}{A,T,G,C} 四种字符。
测试点编号 | n+mn + mn+m 的范围 | 特殊约定 |
---|---|---|
1 | n=m=1n = m = 1n=m=1 | 无特殊要求 |
2 | n+m≤15n + m \leq 15n+m≤15 | |
3 | n+m≤300n + m \leq 300n+m≤300 | |
4 | ||
5 | n+m≤3000n + m \leq 3000n+m≤3000 | 序列中只包含一种字符 |
6 | 无特殊要求 | |
7 | ||
8 | ||
9 | ||
10 |
来自 CodePlus 2017 11 月赛,清华大学计算机科学与技术系学生算法与竞赛协会 荣誉出品。
Credit:idea/邢健开 命题/邢健开 验题/陈宇
Git Repo:https://git.thusaac.org/publish/CodePlus201711
感谢腾讯公司对此次比赛的支持。