比赛场次 | 287 |
---|---|
比赛名称 | 20120703 |
比赛状态 | 已结束比赛成绩 |
开始时间 | 2016-02-21 08:00:00 |
结束时间 | 2016-02-21 12:00:00 |
开放分组 | 全部用户 |
注释介绍 |
题目名称 | DNA重组 |
---|---|
输入输出 | dna.in/out |
时间限制 | 1000 ms (1 s) |
内存限制 | 128 MiB |
测试点数 | 10 简单对比 |
用户 | 结果 | 时间 | 内存 | 得分 |
---|---|---|---|---|
Satoshi | AAAAAAAAAA | 1.691 s | 55.54 MiB | 100 |
【问题描述】
在24世纪,Z国将成为科技最发达的国家,特别是在生物工程领域,他们拥有这样的高新科技,比如使用基因剪,可以将基因链从任意一处断开,而使用基因胶,又可以将任意的基因片断粘到一个集成链上。我们知道,DNA是由一个核苷酸聚合链构成的,一共有4种类型的核苷酸,分别为"A","T","C","G"。
有一次,Z国的研究人员从一些原始的有机组织中提取出了一条DNA链,他们的任务是通过对旧的DNA进行重组,进而生成一条新的DNA链。他们投资了一个计划,用如下的方式使用基因剪和基因胶。
首先,他们将DNA链在某些连接点处断开,这样整个链就会就变成一些DNA片断,然后他们再决定是保留还是丢弃这些片断,如果保留这些片断,他们将利用基因胶把它们粘成一条新链,注意,粘的过程中不能打乱这些片断原来的顺序。在整个过程中他们不得不非常小心地确定这些片断的去留。
当然了,做这些操作是需要花费代价的,每一个“剪开”的操作代价为1,每一个“粘合”操作花费代价也为1。请你写一个程序计算:如果存在一种方式生成一个新的DNA链,那么所需操作的最小代价是多少?
请看下面的例子:
旧的DNA:A---T---A---C---C---G
剪开后: A
T A---C C---G
保留: T
C---G
新的DNA链: T---C---G
花费代价:4
【输入格式】
输入文件第一行有一个正整数T,表示接下来测试数据的个数。每一个测试数据包含两行,每行一个字符串,第一个字符串表示旧的DNA链,第二行为新的DNA链。每个字符串都由"A","T","C"和"G"组成,每一个字符串的长度均不超过3000。
【输出格式】
对于每一个测试数据,输出其最小花费,如果没办法生成新的DNA链,则输出“-1”。
【样例】
dna.in
2
ATACCG
TCG
ATACCG
CTG
dna.out
4
-1