题目名称 | 830. DNA重组 |
---|---|
输入输出 | dna.in/out |
难度等级 | ★★☆ |
时间限制 | 1000 ms (1 s) |
内存限制 | 128 MiB |
测试数据 | 10 |
题目来源 | cqw 于2012-07-03加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:10, 提交:33, 通过率:30.3% | ||||
SnowDancer | 100 | 1.349 s | 103.24 MiB | Pascal |
IMSL77 | 100 | 1.445 s | 73.53 MiB | Pascal |
Satoshi | 100 | 1.568 s | 48.59 MiB | C++ |
王者自由 | 100 | 1.690 s | 62.48 MiB | C++ |
Satoshi | 100 | 1.705 s | 62.48 MiB | C++ |
ZhouHang | 100 | 1.750 s | 69.44 MiB | C++ |
馒头 | 100 | 2.187 s | 72.37 MiB | C++ |
czp | 100 | 2.285 s | 70.39 MiB | Pascal |
fuhao | 100 | 2.347 s | 68.92 MiB | Pascal |
isabella | 100 | 2.462 s | 68.83 MiB | Pascal |
本题关联比赛 | |||
20120703 | |||
20120703 |
关于 DNA重组 的近10条评论(全部评论) | ||||
---|---|---|---|---|
这题改了快10边 弱的不能多说
馒头
2013-10-30 19:27
1楼
|
【问题描述】
在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