【洛谷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.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. 在一个人类基因工作组的任务 ...
随机推荐
- th:insert、th:replace、th:include抽取和引用页面公共片段、传参等
一.抽取公共片段 th:fragment 给片段命名 将公共片段抽取出来,并在顶级标签内使用th:fragment给该片段命名. 例如:将公共片段抽取出来放到comment/bar.html中: & ...
- frp实现NAS外网访问
开始 入手了NAS之后就看是漫漫的折腾内网穿透的不归路.用的最多最简单的是下面三种 QC:群晖自带的,速度在100kb左右,能不能连上有时候都是运气,极其不稳定. DDNS:最推荐的方式.上下行都取决 ...
- 【NX二次开发】Block UI 指定矢量
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- csp-s模拟测试52-53
留坑.... 改完题再说吧. 留坑....最近考得什么鬼??模拟53T1 u(差分) 一道差分题????然而考场没有想到如何维护斜率上的差分,事后经miemeng和cyf的生(xuan)动(xue)讲 ...
- python安装、卸载包的方法
anaconda包管理器 conda命令[1] 环境管理 conda info -e # 查看当前已安装的环境 conda create -n py27 python=2.7 # 添加2.7版本的Py ...
- Linux云计算-02_CentOS Linux 7.X系统管理
Linux系统安装完毕,需要对Linux系统进行管理和维护,让Linux服务器能真正应用于企业中. 本章介绍Linux系统32位与64位区别.内核命名规则.引导原理.启动流程.TCP/IP协议概述.I ...
- Docker安装MySQL8.0
环境 CentOS 7.5 Docker 1.13.1 MySQL 8.0.16 安装 拉取镜像 默认拉取最新版本的镜像 $ docker pull mysql 如果要指定版本,使用下面的命令 $ d ...
- Redis:redis.conf配置文件 - 及配置详解
配置文件详解(文章最后有完整的redis.conf文件) ################################### NETWORK ######################### ...
- spring cloud服务器启动之后立刻通过zuul访问其中的实例报zuul连接超时的问题
spring cloud服务启动之后,立刻进行调用 报错:com.netflix.zuul.exception.ZuulException: Forwarding error Caused by: c ...
- swoole实现任务定时自动化调度详解
开发环境 环境:lnmp下进行试验 问题描述 这几天做银行对帐接口时,踩了一个坑,具体需求大致描述一下. 银行每天凌晨后,会开始准备昨天的交易流水数据,需要我们这边请求拿到. 因为他们给的是一个bas ...