题目:https://www.luogu.org/problemnew/show/P1140

题意:

给定两串基因串(只包含ATCG),在其中插入任意个‘-’使得他们匹配。(所以一共是5种字符)

这5种字符两两之间有一个匹配数值,要求使这两个字符串的匹配值之和最大。

思路:

dp[i][j]表示匹配了s1中前i个字符和s2中前j个字符的最大匹配值。

完成s1[i]与s2[j]的匹配只有三种可能。

1.s1[i]之前已经匹配好,s2[j]配‘-’。即dp[i][j] = dp[i][j-1]+sco[s2[j]]['-']

2.s2[j]之前已经匹配好,s1[i]配‘-’。即d[i][j] = dp[i-1][j]+sco[s1[i]]['-']

3.s1[i]配s2[j]。即dp[i][j] = dp[i - 1][j - 1] + sco[s1[i]][s2[j]]

 #include<cstdio>
#include<cstdlib>
#include<map>
#include<set>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#include<stack>
#include<queue>
#include<iostream> #define inf 0x7fffffff
using namespace std;
typedef long long LL;
typedef pair<string, string> pr; const int sco[][] =
{
{, -, -, -, -},
{-, , -, -, -},
{-, -, , -, -},
{-, -, -, , -},
{-, -, -, -, },
};
const int maxn = ;
int len1, len2;
char s1[maxn], s2[maxn];
int dp[maxn][maxn]; int main()
{
scanf("%d %s", &len1, s1 + );
scanf("%d %s", &len2, s2 + );
map<char, int>mp;
mp['A'] = ;mp['C'] = ;mp['G'] = ; mp['T'] = ;
for(int i = ; i <= len1; i++){
for(int j = ; j <= len2; j++){
dp[i][j] = -2e8;
}
} dp[][] = ;
for(int i = ; i <= len1; i++){
dp[i][] = dp[i - ][] + sco[mp[s1[i]]][];
}
for(int i = ; i <= len2; i++){
dp[][i] = dp[][i - ] + sco[mp[s2[i]]][];
}
for(int i = ; i <= len1; i++){
for(int j = ; j <= len2; j++){
dp[i][j] = max(dp[i][j], dp[i][j - ] + sco[mp[s2[j]]][]);
dp[i][j] = max(dp[i][j], dp[i - ][j] + sco[mp[s1[i]]][]);
dp[i][j] = max(dp[i][j], dp[i - ][j - ] + sco[mp[s1[i]]][mp[s2[j]]]);
}
}
printf("%d\n", dp[len1][len2]);
return ;
}

洛谷P1140 相似基因【线性dp】的更多相关文章

  1. 洛谷 P1140 相似基因 ( 线性DP || 类LCS )

    题意 : 题目链接 分析 :  可以观察到给出的配对代价表中对角线部分是正数 其余的都是负数,也就是说让相同字母的匹配的越多越好 即找出 LCS 但是这里 DP 的过程需要记录一下代价 有关 LCS ...

  2. 洛谷P1140 相似基因 (DP)

    洛谷P1140 相似基因 题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了44种核苷酸,简记作A,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. ...

  3. 洛谷P1140 相似基因(线性DP)

    题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了444种核苷酸,简记作A,C,G,TA,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. 在一个人类 ...

  4. 2018.08.16 洛谷P2029 跳舞(线性dp)

    传送门 简单的线性dp" role="presentation" style="position: relative;">dpdp. 直接推一推 ...

  5. 洛谷 P1140 相似基因(DP)

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 参考资料: [1]:https://www.cnblogs.com/real-l/p/9 ...

  6. 2018.11.04 洛谷P2679 子串(线性dp)

    传送门 为什么前几年的noipnoipnoip总是出这种送分题啊? 这个直接线性dpdpdp不就完了吗? f[i][j][k][0/1]f[i][j][k][0/1]f[i][j][k][0/1]表示 ...

  7. 洛谷P1140 相似基因

    题目:https://www.luogu.org/problemnew/show/P1140 分析: 本题一看就知道是一道动归,其实和字串距离非常的像,只不过多了题目规定的匹配相似度罢了. 匹配的相似 ...

  8. 洛谷 P1140 相似基因 题解

    每日一题 day23 打卡 Analysis dp[i][j]表示序列A中前i个与序列B中前j个匹配的相似度最大值 所以,dp方程很容易想到: 1.让a[i]与b[j]匹配 2.让a[i]与B序列中一 ...

  9. 洛谷P1052 过河【线性dp】【离散化】

    题目:https://www.luogu.org/problemnew/show/P1052 题意: 青蛙要从0跳到超过$l$的地方,每一次可以跳$s$到$t$之间的任意数. 在河中有m个石头,要求在 ...

随机推荐

  1. upw,c#,代码实现关闭,重启应用

    微软为uwp直接提供了这些API,可以很容易的直接进行调用 关闭 using Windows.ApplicationModel.Core; CoreApplication.Exit(); or usi ...

  2. [转帖].NET导出Excel的四种方法及评测

    .NET导出Excel的四种方法及评测 https://www.cnblogs.com/sdflysha/p/20190824-dotnet-excel-compare.html 导出Excel是.N ...

  3. Linux命令中dd的作用

    Linux命令中用vi编辑文本时dd的作用是删除整行文本的信息.

  4. ssm+reids缓存整合

    在说正文之前我们先介绍一下redis: redis是当今比较热门的非关系型数据库之一,他使用的是key-value的键值对来进行存储,是一个存在于内存之中的数据库,我们一般用于做数据缓存.当我们需要大 ...

  5. Jquery中数组转字符串,c:foreach自动将带","字符串进行拆分赋值

    1.数组转字符串,逗号分割 a.push()将元素依次添加至数组: b.join()将数组转换成字符串,里面可以带参数分隔符,默认[,] <script type = text/javascri ...

  6. ACM-ICPC 2018 徐州赛区网络预赛 I. query 树状数组

    I. query 题目链接: Problem Description Given a permutation \(p\) of length \(n\), you are asked to answe ...

  7. thinkphp5日志文件权限的问题

    由于www用户和root用户(比如command的cli进程日志)都有可能对log文件进行读写. 如果是由www用户创建的log文件,不会出任何问题. 但是如果是先由root用户创建的log文件,然后 ...

  8. Django-djangorestframework-异常模块-源码及自定义异常

    目录 异常模块 为什么要自定义异常模块 常见的几种异常情况 异常模块源码分析 自定义 drf 异常处理 异常模块 为什么要自定义异常模块 所有经过 drf APIView 视图类产生的异常,都可以提供 ...

  9. 【leetcode】74. 搜索二维矩阵

    题目链接:传送门 题目描述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例  ...

  10. git提交项目到码云

    提交代码: git initgit remote add origin 远程仓库地址git pull --rebase origin mastergit add -Agit commit -m &qu ...