洛谷 P1140 相似基因 题解
每日一题 day23 打卡
Analysis
dp[i][j]表示序列A中前i个与序列B中前j个匹配的相似度最大值
所以,dp方程很容易想到:
1.让a[i]与b[j]匹配
2.让a[i]与B序列中一个空位匹配
3.让b[j]与A序列中一个空位匹配
dp[i][j]=max(dp[i][j],dp[i-1][j-1]+form[a[i]][b[j]],dp[i-1][j]+form[a[i]][5],dp[i][j-1]+form[5][b[j]]);
对于初始化,就是分别让每个a[i]和每个b[j]与一个空串匹配
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long
#define maxn 100+10
#define INF 2147483647
using namespace std;
inline int read()
{
int x=;
bool f=;
char c=getchar();
for(; !isdigit(c); c=getchar()) if(c=='-') f=;
for(; isdigit(c); c=getchar()) x=(x<<)+(x<<)+c-'';
if(f) return x;
return -x;
}
inline void write(int x)
{
if(x<){putchar('-');x=-x;}
if(x>)write(x/);
putchar(x%+'');
}
int n,m;
char s1[maxn],s2[maxn];
int str1[maxn],str2[maxn],dp[maxn][maxn];
int form[maxn][maxn]=
{
{,,,,,,},
{,,-,-,-,-},
{,-,,-,-,-},
{,-,-,,-,-},
{,-,-,-,,-},
{,-,-,-,-,}
};
inline int max_four(int x,int y,int z,int o)
{
return max(max(x,y),max(z,o));
}
signed main()
{
n=read();
for(int i=;i<=n;i++) cin>>s1[i];
m=read();
for(int i=;i<=m;i++) cin>>s2[i];
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
dp[i][j]=-INF;
for(int i=;i<=n;i++)
{
if(s1[i]=='A') str1[i]=;
else if(s1[i]=='C') str1[i]=;
else if(s1[i]=='G') str1[i]=;
else if(s1[i]=='T') str1[i]=;
}
for(int i=;i<=m;i++)
{
if(s2[i]=='A') str2[i]=;
else if(s2[i]=='C') str2[i]=;
else if(s2[i]=='G') str2[i]=;
else if(s2[i]=='T') str2[i]=;
}
for(int i=;i<=n;i++) dp[i][]=dp[i-][]+form[str1[i]][];
for(int i=;i<=m;i++) dp[][i]=dp[][i-]+form[][str2[i]];
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
dp[i][j]=max_four(dp[i][j],dp[i-][j-]+form[str1[i]][str2[j]],dp[i-][j]+form[str1[i]][],dp[i][j-]+form[][str2[j]]);
}
write(dp[n][m]);
return ;
}
请各位大佬斧正(反正我不认识斧正是什么意思)
洛谷 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 相似基因 ( 线性DP || 类LCS )
题意 : 题目链接 分析 : 可以观察到给出的配对代价表中对角线部分是正数 其余的都是负数,也就是说让相同字母的匹配的越多越好 即找出 LCS 但是这里 DP 的过程需要记录一下代价 有关 LCS ...
- 【洛谷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]直 ...
- 洛谷P2832 行路难 分析+题解代码【玄学最短路】
洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...
- 【洛谷P3960】列队题解
[洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...
随机推荐
- Python基础案例1如何实现对应位置上的元素相乘/相加/相减
如何通过a b得到c 本文以“乘”引入,其他运算,类似.案例逻辑如下: a = [[1, 2, 3], [4, 5, 6], [1, 1, 1]]b = [[1, 1, 2], [1, 3, 2], ...
- 【LEETCODE】54、数组分类,简单级别,题目:605、532
数组类,简单级别完结.... 不容易啊,基本都是靠百度答案.... 希望做过之后后面可以自己复习,自己学会这个解法 package y2019.Algorithm.array; /** * @Proj ...
- [LOJ6432] [PKUSC2018] 真实排名
题目链接 LOJ:https://loj.ac/problem/6432 Solution 假设我们当前要算\(x\)的答案,分两种情况讨论: \(x\)没被翻倍,那么\([a_x/2,a_x]\)这 ...
- [LOJ#3119][Luogu5400][CTS2019]随机立方体(容斥+DP)
https://www.cnblogs.com/cjyyb/p/10900993.html #include<cstdio> #include<algorithm> #defi ...
- WPF 程序如何跨窗口/跨进程设置控件焦点
原文:WPF 程序如何跨窗口/跨进程设置控件焦点 WPF 程序提供了 Focus 方法和 TraversalRequest 来在 WPF 焦点范围内转移焦点.但如果 WPF 窗口中嵌入了其他框架的 U ...
- wbSocket
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- Expanded, SingleChildScrollView, CustomScrollView, container, height, width
SingleChildScrollView, CustomScrollView, container, init: double.inifinity. then use Expanded to con ...
- Java知识回顾 (11) 异常处理
距离最近的 Java知识回顾系列(10),2019.4.24日,到现在,已经近半年过去了. 感觉,做一件事情,如果有头无尾,实在不好,心里会一直悬着.所以,现在继续上面的内容. 再次声明,正如(1)中 ...
- SpringMVC、SpringFox和Swagger整合项目实例
目标 在做项目的时候,有时候需要提供其它平台(如业务平台)相关的HTTP接口,业务平台则通过开放的HTTP接口获取相关的内容,并完成自身业务~ 提供对外开放HTTP API接口,比较常用的是采用Spr ...
- AIR面向IOS设备的原生扩展
来源:http://www.cnblogs.com/alex-tech/archive/2012/03/22/2411264.html ANE组成部分 在IOS平台中,ANE的组成部分基本分为AS 3 ...