洛谷 P1140 相似基因 ( 线性DP || 类LCS )
题意 : 题目链接
分析 :
可以观察到给出的配对代价表中对角线部分是正数
其余的都是负数,也就是说让相同字母的匹配的越多越好
即找出 LCS 但是这里 DP 的过程需要记录一下代价
有关 LCS 的一篇博客 ==> Click here
如果不是计算长度而是计算配对的价值,那么初始化的时候
记得将每一个串的字母作为结尾与空串配对的价值初始化一下
即 dp[i][0] 与 dp[0][i]
#include<bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
;
][] = {
    {, -, -, -, -},
    {-, , -, -, -},
    {-, -, , -, -},
    {-, -, -, , -},
    {-, -, -, -, -INF}
};
char str1[maxn], str2[maxn];
map<char, int> mp;
int dp[maxn][maxn];
int main(void)
{
    mp[,
    mp[,
    mp[,
    mp[,
    mp[;
    memset(dp, -INF, sizeof(dp));
    int N, M;
    scanf("%d", &N);
    ; i<=N; i++) scanf(" %c", &str1[i]);
    scanf("%d", &M);
    ; i<=M; i++) scanf(" %c", &str2[i]);
    dp[][] = ;
    ; i<=N; i++) dp[i][] = dp[i-][] + cost[mp[str1[i]]][];
    ; i<=M; i++) dp[][i] = dp[][i-] + cost[][mp[str2[i]]];
    /*
    对于上面这两个 for 循环的初始化,实际上就是对每一个串到 i 为结尾与一个空串
    做匹配的结果,即到 i 为止,整个串与空碱基做匹配的代价,这个初始化是有必要的
    举个例子
    1 A
    3 TGC
    没有这个初始化的话 错误答案就是 -7 对应如下情况
    ---
    TGC
    实际最优的情况是 -4 对应如下情况
    --A
    TGC
    因为没有这个初始化,dp[1][j] 的情况不能从 dp[i-1][j-1] 转移而来
    即让第一个串的第 1 字符与当前第二个串的第 j 个字符做匹配的代价
    对于LCS这种DP的变体,记得这个初始化!
    */
    ; i<=N; i++){
        ; j<=M; j++){
            dp[i][j] = max(dp[i][j], dp[i-][j-] + cost[mp[str1[i]]][mp[str2[j]]]);
            dp[i][j] = max(dp[i][j], dp[i-][j] + cost[mp[str1[i]]][]);
            dp[i][j] = max(dp[i][j], dp[i][j-] + cost[][mp[str2[j]]]);
        }
    }
//    for(int i=1; i<=N; i++){
//        for(int j=1; j<=M; j++){
//            printf("%d ", dp[i][j]);
//        }puts("");
//    }
    return !printf("%d\n", dp[N][M]);;
}
洛谷 P1140 相似基因 ( 线性DP || 类LCS )的更多相关文章
- 洛谷P1140 相似基因 (DP)
		洛谷P1140 相似基因 题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了44种核苷酸,简记作A,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. ... 
- 洛谷P1140 相似基因(线性DP)
		题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了444种核苷酸,简记作A,C,G,TA,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. 在一个人类 ... 
- 2018.08.16 洛谷P2029 跳舞(线性dp)
		传送门 简单的线性dp" role="presentation" style="position: relative;">dpdp. 直接推一推 ... 
- 洛谷P1140 相似基因【线性dp】
		题目:https://www.luogu.org/problemnew/show/P1140 题意: 给定两串基因串(只包含ATCG),在其中插入任意个‘-’使得他们匹配.(所以一共是5种字符) 这5 ... 
- 洛谷 P1140 相似基因(DP)
		传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 参考资料: [1]:https://www.cnblogs.com/real-l/p/9 ... 
- 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]表示 ... 
- 洛谷P1140 相似基因
		题目:https://www.luogu.org/problemnew/show/P1140 分析: 本题一看就知道是一道动归,其实和字串距离非常的像,只不过多了题目规定的匹配相似度罢了. 匹配的相似 ... 
- 洛谷 P1140 相似基因 题解
		每日一题 day23 打卡 Analysis dp[i][j]表示序列A中前i个与序列B中前j个匹配的相似度最大值 所以,dp方程很容易想到: 1.让a[i]与b[j]匹配 2.让a[i]与B序列中一 ... 
- 洛谷P1052 过河【线性dp】【离散化】
		题目:https://www.luogu.org/problemnew/show/P1052 题意: 青蛙要从0跳到超过$l$的地方,每一次可以跳$s$到$t$之间的任意数. 在河中有m个石头,要求在 ... 
随机推荐
- sql盲注-笔记
			盲注是因为数据库查询的结果不会直接显示在页面.只能通过构造查询语句查看反馈的结果真&假状态来判断信息. 实际注入手法和回显注入区别不大 下面只记录相关思路 select length ... 
- CSS3新特性(阴影、动画、渐变)
			一.阴影 1.1文字阴影: text-shadow<length>①: 第1个长度值用来设置对象的阴影水平偏移值.可以为负值 <length>②: 第2个长度值用来设置对象的阴 ... 
- 生成url的二维码图片
			<?php require_once "./phpqrcode.php"; //生成二维码 $img = \QRcode::png("https://www.bai ... 
- python__基础数据类型
			字符串和常用数据结构 使用字符串 第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算导弹的弹道,因此在计算机刚刚诞生的那个年代,计算机处理的信息主要是数值,而世界上的第一台 ... 
- lamp项目上线流程简述 (ubuntu16.04 )
			1 新建一个sudo用户,而不是直接用root操作 ① 新建用户可参考 https://www.cnblogs.com/bushuwei/p/10880182.html ② 赋予sudo权限: ... 
- 吴恩达机器学习101:SVM优化目标
			1.为了描述SVM,需要从logistic回归开始进行学习,通过改变一些小的动作来进行支持向量机操作.在logistic回归中我们熟悉了这个假设函数以及右边的sigmoid函数,下式中z表示θ的转置乘 ... 
- 关于echarts 重绘/图表切换/数据清空
			容器id 为main var myChart=document.getElementById("main") myChart.removeAttribute("_echa ... 
- celery开发中踩的坑
			celery开发中踩的坑 celery连接redis 当使用redis做broker,redis连接需要密码时: BROKER_URL='redis://:xxxxx@127.0.0.1:6379/0 ... 
- SQLite3中自增主键相关知识总结,清零的方法、INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用
			这篇文章主要介绍了SQLite3中自增主键相关知识总结,清零的方法.INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用等,需要的朋友可以参考下 一.SQLite清空表 ... 
- centos--软件源--本地软件源---离线安装
			一.软件源配置文件 1./etc/yum.conf 配置文件 [main] cachedir=/var/cache/yum #yum下载的RPM包的缓存目录 keepcache= #缓存是否保存,1保 ... 
