分析

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 相似基因】动态规划的更多相关文章

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

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

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

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

  3. 洛谷P1140 相似基因【线性dp】

    题目:https://www.luogu.org/problemnew/show/P1140 题意: 给定两串基因串(只包含ATCG),在其中插入任意个‘-’使得他们匹配.(所以一共是5种字符) 这5 ...

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

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

  5. 洛谷P1140 相似基因

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

  6. 洛谷 P1140 相似基因 题解

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

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

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

  8. 洛谷P1280 && caioj 1085 动态规划入门(非常规DP9:尼克的任务)

    这道题我一直按照往常的思路想 f[i]为前i个任务的最大空暇时间 然后想不出来怎么做-- 后来看了题解 发现这里设的状态是时间,不是任务 自己思维还是太局限了,题做得太少. 很多网上题解都反着做,那么 ...

  9. 洛谷P1140 基因匹配 //DP真正意义上的一血

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

随机推荐

  1. 作为一名双非本科毕业的Java程序员,我该如何在日益严重的内卷化中避免被裁?

    前言 对一个 Java 程序员而言,并发编程能否熟练掌握是判断他是不是优秀的重要标准之一.因为并发编程在 Java 语言中最为晦涩的知识点,它涉及内存.CPU.操作系统.编程语言等多方面的基础能力,更 ...

  2. HTML——超链接<a>

    一.超链接的一般格式: <a href="路径" target="目标窗口的位置">链接文本或图像<a/> 1.常用参数说明: href ...

  3. (5)使用自定Web根目录

    调整 Web 站点 http://server0.example.com 的网页目录,要求如下: 1) 新建目录 /webroot,作为此站点新的网页文件根目录 # mkdir /webroot # ...

  4. 【渗透实战】那些奇葩的WAF_第二期_无意发现通杀漏洞,空字节突破上传!

    /文章作者:Kali_MG1937 CSDN博客号:ALDYS4 QQ:3496925334 未经许可,禁止转载/ 该博文为本人18年左右的渗透记录,文法粗糙,技术含量极低,流水账文章,且今日不知为何 ...

  5. 08:'my_tag' is not a registered tag library. Must be one of

    确保每次修改模板标签时都重新启动 Django 开发服务器(或确保它自己重新启动).如果服务器没有重新启动,Django 将不会注册标签. 从 django 1.9 开始,您可以在如下设置中加载这些新 ...

  6. jvm面试常提的问题

    1.JVM如何加载一个类的过程,双亲委派模型中有哪些方法 类加载过程:加载.验证(验证阶段作用是保证Class文件的字节流包含的信息符合JVM规范,不会给JVM造成危害).准备(准备阶段为变量分配内存 ...

  7. JVM调优的反思与总结

    垃圾回收的悖论 所谓"成也萧何败萧何".Java的垃圾回收确实带来了很多好处,为开发带来了便利.但是在一些高性能.高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈.目前JDK ...

  8. NOIP模拟测试25「字符串·乌鸦喝水·所陀门王的宝藏(陀螺王)」

    字符串 题解 没看出catalan怎么办 dp打表啊! 考虑大力dp拿到30分好成绩!顺便收获一张表 打表发现$C_{n+m}^{m}-C_{n+m}^{m-1}$ 仔细观察然后发现其实就是之前的网格 ...

  9. Jetpack Compose和View的互操作性

    Jetpack Compose Interoperability Compose风这么大, 对于已有项目使用新技术, 难免会担心兼容性. 对于Compose来说, 至少和View的结合是无缝的. (目 ...

  10. CosId 1.0.3 发布,通用、灵活、高性能的分布式 ID 生成器

    CosId 通用.灵活.高性能的分布式 ID 生成器 介绍 CosId 旨在提供通用.灵活.高性能的分布式系统 ID 生成器. 目前提供了俩大类 ID 生成器:SnowflakeId (单机 TPS ...