【洛谷P1140 相似基因】动态规划
分析
f[i][j] 表示 1数组的第i位和2数组的第j位匹配的最大值
f[1][1]=-2
f[2][1]=-2+5=3
f[3][1]=-2+5+5=8
三个决策:
1、由f[i-1][j-1]直接推得
2、a[i]位匹配'-' f[i][j]=Max(f[i-1][j]+v[4][a]);
3、b[j]位匹配'-' f[i][j]=Max(f)
f[i][j]=f[i-1][j-1]+v[a[i]][b[j]]
AC代码
// luogu-judger-enable-o2
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <ctype.h>
#include <vector>
#include <set>
#include <queue>
#include <stack>
#include <cmath>
#define lson nod<<1
#define rson nod<<1|1
#define ms(a,b) memset(a,b,sizeof(a))
#define Inf 0x7fffffff
using namespace std;
typedef long long LL;
namespace Fastio{
inline int read() {
int w=0,x=0; char ch=0;
while (!isdigit(ch)) {w|=ch=='-';ch=getchar();}
while (isdigit(ch)) {x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return w?-x:x;
}
inline void write(int x) {
int y(10),len(1);
while (y<=x) y=(y<<1)+(y<<3),len++;
while (len--) {y/=10;putchar(x/y+48);x%=y;}
}
template <class T> T Min(T x,T y){return(x)<(y)?(x):(y);}
template <class T> T Max(T x,T y){return(x)<(y)?(y):(x);}
}
using namespace Fastio;
const int v[5][5]={{5,-1,-2,-1,-3},{-1,5,-3,-2,-4},{-2,-3,5,-2,-2},{-1,-2,-2,5,-1},{-3,-4,-2,-1,0}};
char ch1[105],ch2[105];
int a[105],b[105];
int f[105][105];
int n,m;
inline void Change(char s[],int a[]) {
for (int i=0;i<strlen(s);i++) {
if (s[i]=='A') a[i+1]=0;
if (s[i]=='C') a[i+1]=1;
if (s[i]=='G') a[i+1]=2;
if (s[i]=='T') a[i+1]=3;
}
}
int main() {
n=read(); scanf("%s",ch1); Change(ch1,a);
m=read(); scanf("%s",ch2); Change(ch2,b);
for (int i=1;i<=n;i++) f[i][0]=f[i-1][0]+v[4][a[i]];
for (int i=1;i<=m;i++) f[0][i]=f[0][i-1]+v[4][b[i]];
for (int i=1;i<=n;i++) {
for (int j=1;j<=m;j++) {
f[i][j]=f[i-1][j-1]+v[a[i]][b[j]];
f[i][j]=Max(f[i][j],f[i-1][j]+v[4][a[i]]);
f[i][j]=Max(f[i][j],f[i][j-1]+v[4][b[j]]);
}
}
printf("%d\n",f[n][m]);
return 0;
}
【洛谷P1140 相似基因】动态规划的更多相关文章
- 洛谷P1140 相似基因 (DP)
洛谷P1140 相似基因 题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了44种核苷酸,简记作A,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. ...
- 洛谷 P1140 相似基因(DP)
传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 参考资料: [1]:https://www.cnblogs.com/real-l/p/9 ...
- 洛谷P1140 相似基因【线性dp】
题目:https://www.luogu.org/problemnew/show/P1140 题意: 给定两串基因串(只包含ATCG),在其中插入任意个‘-’使得他们匹配.(所以一共是5种字符) 这5 ...
- 洛谷P1140 相似基因(线性DP)
题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了444种核苷酸,简记作A,C,G,TA,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. 在一个人类 ...
- 洛谷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序列中一 ...
- 洛谷 P1140 相似基因 ( 线性DP || 类LCS )
题意 : 题目链接 分析 : 可以观察到给出的配对代价表中对角线部分是正数 其余的都是负数,也就是说让相同字母的匹配的越多越好 即找出 LCS 但是这里 DP 的过程需要记录一下代价 有关 LCS ...
- 洛谷P1280 && caioj 1085 动态规划入门(非常规DP9:尼克的任务)
这道题我一直按照往常的思路想 f[i]为前i个任务的最大空暇时间 然后想不出来怎么做-- 后来看了题解 发现这里设的状态是时间,不是任务 自己思维还是太局限了,题做得太少. 很多网上题解都反着做,那么 ...
- 洛谷P1140 基因匹配 //DP真正意义上的一血
题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了44种核苷酸,简记作A,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. 在一个人类基因工作组的任务 ...
随机推荐
- Android系统编程入门系列之应用环境及开发环境介绍
作为移动端操作系统,目前最新的Android 11.0已经发展的比较完善了,现在也到了系统的整理一番的时间,接下来的系列文章将以Android开发者为中心,争取用归纳总结的态度对初级入门者所应 ...
- Java8 Lambda表达式、Optional类浅析
1.概念 Lambda是一个匿名函数,可以将其理解为一段可以传递的代码(将代码像数据一样进行传递)可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风格,使得java语言的表达能利得到了提升. 2. ...
- 【NX二次开发】调整视图大小
调整视图大小 tag_t tagView; UF_VIEW_ask_work_view(&tagView); UF_VIEW_fit_view(tagView, 0.7);//if NULL_ ...
- FlinkSQL写入Kafka/ES/MySQL示例-JAVA
一.背景说明 Flink的API做了4层的封装,上两层TableAPI.SQL语法相对简单便于编写,面对小需求可以快速上手解决,本文参考官网及部分线上教程编写source端.sink端代码,分别读取s ...
- C# Net Core 使用 itextsharp.lgplv2.core 把Html转PDF
C# Net Core 使用 itextsharp.lgplv2.core 把Html转PDF 只支持英文(中文我不知道怎么弄,懂的朋友帮我看一下)!!!!![补充:评论区的小伙伴已解决] 引入包it ...
- ANDROID开发之GC_CONCURRENT freed
<GC_Reason> <Amount_freed>, <Heap_stats>, <External_memory_stats>, <Pause ...
- 一文带你走遍Git世界,教会你Git的使用
@ 目录 这篇文章教会Git 1. Git是什么? 1.1 发展历程 1.2 Git是什么? 1.3 Git和SVN 2.Git有什么用? 2.1 代码合并 2.2 代码备份 2.3 代码还原 2.4 ...
- 《手把手教你》系列基础篇之(三)-java+ selenium自动化测试- 启动三大浏览器(上)(详细教程)
1.简介 前边宏哥已经将环境搭建好了,今天就在Java项目搭建环境中简单地实践一下: 启动三大浏览器.按市场份额来说,全球前三大浏览器是:IE.Firefox.Chrome.因此宏哥这里主要介绍一下如 ...
- ACM、OI、OJ题目常用代码模板
仓库源码地址:https://github.com/richenyunqi/code-templates 本仓库主要提供 ACM.OI.OJ.PAT.CSP 题目中常见算法和数据结构的实现,它们都以基 ...
- 5、could not start the service mysql
1.这个原因是因为mysql多次安装没有卸载干净的原因; 2.解决办法是: (1)删除系统中已经安装的mysql目录中的内容: (2)同时按住"win+r"键调出"运行& ...