hdu 1080(LCS变形)
Human Gene Functions
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3008 Accepted Submission(s): 1701
is well known that a human gene can be considered as a sequence,
consisting of four nucleotides, which are simply denoted by four
letters, A, C, G, and T. Biologists have been interested in identifying
human genes and determining their functions, because these can be used
to diagnose human diseases and to design new drugs for them.
A
human gene can be identified through a series of time-consuming
biological experiments, often with the help of computer programs. Once a
sequence of a gene is obtained, the next job is to determine its
function. One of the methods for biologists to use in determining the
function of a new gene sequence that they have just identified is to
search a database with the new gene as a query. The database to be
searched stores many gene sequences and their functions – many
researchers have been submitting their genes and functions to the
database and the database is freely accessible through the Internet.
A
database search will return a list of gene sequences from the database
that are similar to the query gene. Biologists assume that sequence
similarity often implies functional similarity. So, the function of the
new gene might be one of the functions that the genes from the list
have. To exactly determine which one is the right one another series of
biological experiments will be needed.
Your job is to make a
program that compares two genes and determines their similarity as
explained below. Your program may be used as a part of the database
search if you can provide an efficient one.
Given two genes
AGTGATG and GTTAG, how similar are they? One of the methods to measure
the similarity of two genes is called alignment. In an alignment, spaces
are inserted, if necessary, in appropriate positions of the genes to
make them equally long and score the resulting genes according to a
scoring matrix.
For example, one space is inserted into AGTGATG
to result in AGTGAT-G, and three spaces are inserted into GTTAG to
result in –GT--TAG. A space is denoted by a minus sign (-). The two
genes are now of equal length. These two strings are aligned:
AGTGAT-G
-GT--TAG
In
this alignment, there are four matches, namely, G in the second
position, T in the third, T in the sixth, and G in the eighth. Each pair
of aligned characters is assigned a score according to the following
scoring matrix.
* denotes that a space-space match is not allowed. The score of the alignment above is (-3)+5+5+(-2)+(-3)+5+(-3)+5=9.
Of
course, many other alignments are possible. One is shown below (a
different number of spaces are inserted into different positions):
AGTGATG
-GTTA-G
This
alignment gives a score of (-3)+5+5+(-2)+5+(-1) +5=14. So, this one is
better than the previous one. As a matter of fact, this one is optimal
since no other alignment can have a higher score. So, it is said that
the similarity of the two genes is 14.
input consists of T test cases. The number of test cases ) (T is given
in the first line of the input. Each test case consists of two lines:
each line contains an integer, the length of a gene, followed by a gene
sequence. The length of each gene sequence is at least one and does not
exceed 100.
7 AGTGATG
5 GTTAG
7 AGCTATT
9 AGCTTTAAA
21
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<iostream>
#define N 105
using namespace std; int mp[][]=
{
{,-,-,-,-},
{-,,-,-,-},
{-,-,,-,-},
{-,-,-,,-},
{-,-,-,-,}
};
int dp[N][N];
int main()
{
int tcase;
scanf("%d",&tcase);
while(tcase--)
{
int n,m;
char str1[],str2[];
scanf("%d%s",&n,str1+);
scanf("%d%s",&m,str2+);
memset(dp,,sizeof(dp));
int x,y;
for(int i=; i<=n; i++) ///这里很重要
{
if(str1[i]=='A') y=;
if(str1[i]=='C') y=;
if(str1[i]=='G') y=;
if(str1[i]=='T') y=;
dp[i][] = dp[i-][] + mp[y][];
}
for(int i=; i<=m; i++)
{
if(str2[i]=='A') x=;
if(str2[i]=='C') x=;
if(str2[i]=='G') x=;
if(str2[i]=='T') x=;
dp[][i] = dp[][i-] + mp[][x];
} for(int i=; i<=n; i++)
{
for(int j=; j<=m; j++)
{ if(str1[i]=='A') x=;
if(str1[i]=='C') x=;
if(str1[i]=='G') x=;
if(str1[i]=='T') x=;
if(str2[j]=='A') y=;
if(str2[j]=='C') y=;
if(str2[j]=='G') y=;
if(str2[j]=='T') y=;
dp[i][j] = max(dp[i-][j-]+mp[x][y],max(dp[i-][j]+mp[][x],dp[i][j-]+mp[][y]));
}
}
//for(int i=1;i<=n;i++)
printf("%d\n",dp[n][m]);
}
return ;
}
hdu 1080(LCS变形)的更多相关文章
- Advanced Fruits(HDU 1503 LCS变形)
Advanced Fruits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- hdu 1243(LCS变形)
反恐训练营 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- POJ 1080( LCS变形)
题目链接: http://poj.org/problem?id=1080 Human Gene Functions Time Limit: 1000MS Memory Limit: 10000K ...
- poj 1080 (LCS变形)
Human Gene Functions 题意: LCS: 设dp[i][j]为前i,j的最长公共序列长度: dp[i][j] = dp[i-1][j-1]+1;(a[i] == b[j]) dp[i ...
- hdu 1087(LIS变形)
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- DP问题(3) : hdu 1080
题目转自hdu 1080,题目传送门 题目大意: 不想翻译! 解题思路: 其实就是一道变异的求lcs(Longest common subsequence 最长公共子序列)的题 不过,它的依据是下面这 ...
- UVA-1625-Color Length(DP LCS变形)
Color Length(UVA-1625)(DP LCS变形) 题目大意 输入两个长度分别为n,m(<5000)的颜色序列.要求按顺序合成同一个序列,即每次可以把一个序列开头的颜色放到新序列的 ...
- HDU 5791 Two ——(LCS变形)
感觉就是最长公共子序列的一个变形(虽然我也没做过LCS啦= =). 转移方程见代码吧.这里有一个要说的地方,如果a[i] == a[j]的时候,为什么不需要像不等于的时候那样减去一个dp[i-1][j ...
- hdu 1080 dp(最长公共子序列变形)
题意: 输入俩个字符串,怎样变换使其所有字符对和最大.(字符只有'A','C','G','T','-') 其中每对字符对应的值如下: 怎样配使和最大呢. 比如: A G T G A T G - G ...
随机推荐
- bzoj4518: [Sdoi2016]征途(DP+决策单调性分治优化)
题目要求... 化简得... 显然m和sum^2是已知的,那么只要让sigma(si^2)最小,那就变成了求最小平方和的最小值,经典的决策单调性,用分治优化即可. 斜率优化忘得差不多就不写了 #inc ...
- 【优先队列】【UVa11997】K Smallest Sums
传送门 Description Input Output Translation · 给定k个长度为k的数组,把每个数组选一个元素加起来,这样共有kk种可能的答案,求最小的k个 Sample Inpu ...
- 解决webstrom 输入法光标不跟随问题
参考博客地址 https://blog.csdn.net/wang414300980/article/details/79537875 原因是jdk版本问题,下载jdk jbsdk8u152b1036 ...
- HDU1914 稳定婚姻匹配
The Stable Marriage Problem Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (J ...
- IE8动态创建CSS
IE8动态创建CSS 最近在项目中用到在页面中动态创建CSS方法,记录一下方便以后查看 一. 在IE下动态创建(网上收集3种方法,最后一个方法未测试成功,具体不知道什么原因) 第一种(此方法很麻烦,需 ...
- JS把内容动态插入到DIV
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DT ...
- uva 1506 Largest Rectangle in a Histogram
Largest Rectangle in a Histogram http://acm.hdu.edu.cn/showproblem.php?pid=1506 Time Limit: 2000/100 ...
- [Luogu 2261] CQOI2007 余数求和
[Luogu 2261] CQOI2007 余数求和 这一定是我迄今为止见过最短小精悍的省选题了,核心代码 \(4\) 行,总代码 \(12\) 行,堪比小凯的疑惑啊. 这题一看暴力很好打,然而 \( ...
- 单词转换成向量形式 word2vec
word2vec(word to vector)是一个将单词转换成向量形式的工具.可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相 似度.word2ve ...
- WCF 同一个解决方案中控制台应用添加服务引用报错
错误提示: “Unable to check out the current file. The file may be read-only or locked, or you may need to ...