洛谷 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个石头,要求在 ...
随机推荐
- 【VS开发】【智能语音处理】解读男女声音的区别:亮度,糙度
1. 男女声音的本质不同:音高不同 这是废话,地球人都知道.都说女声比男声高八度,其实不能,高4-6度差不多. 2. 男女声音的不同:亮度 从直观上这个很好理解,女声普遍更"亮", ...
- python logger理解
import logging#进行基本的日志配置 logging.basicConfig(filename = 'access.log',format = '%(asctime)s - %(name) ...
- Dubbo基础、高级讲解
基础 https://blog.csdn.net/hardworking0323/article/category/6148466 高级 https://blog.csdn.net/hardworki ...
- Spring数据库主从分离
1.spring+spring mvc +mybatis+druid 实现数据库主从分离 2.Spring+MyBatis主从读写分离 3.MyCat痛点 4.Spring+MyBatis实现数据库读 ...
- 【转帖】UDIMM、RDIMM、SODIMM以及LRDIMM的区别
转载自http://www.sohu.com/a/165343889_781333. DIMM简介 DIMM(Dual Inline Memory Module,双列直插内存模块)与SIMM(sing ...
- 基于Spark的电影推荐系统
数据文件: u.data(userid itemid rating timestamp) u.item(主要使用 movieid movietitle) 数据操作 把u.data导入RDD, t ...
- [.net core]9.中间件的具体实现
查看Startup.cs的configure方法 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { i ...
- css3弹性伸缩布局(一)—————flex布局
CSS3弹性伸缩布局简介 2009年,W3C提出了一种崭新的方案—-Flex布局(即弹性伸缩布局),它可以简便.完整.响应式地实现各种页面布局,包括一直让人很头疼的垂直水平居中也变得很简单地就迎刃而解 ...
- ubuntu 安装mysql5.7
一.Windows mysql5.6 解压版 安装 关于widnows平台上的安装教程,可参考百度经验: 链接:https://jingyan.baidu.com/article/f3ad7d0ffc ...
- element-ui 中 switch 开关绑定number 的解决方法
虽然element-ui 的文档中说明 v-model的值可以是 boolean / string / number 三种类型 , (文档在此)https://element.eleme.cn/#/z ...