杭电1080 J - Human Gene Functions
题目大意:
两个字符串,可以再中间任何插入空格,然后让这两个串匹配,字符与字符之间的匹配有各自的分数,求最大分数
最长公共子序列模型。
dp[i][j]表示当考虑吧串1的第i个字符和串2的第j个字符时,当前的最大分数,当前有3中可能,
1,i与j直接匹配,那么这个状态是由dp[i-1][j-1]转移过来的.
2,i与空格匹配,那么j就要与i-1匹配了,由dp[i-1][j]转移过来。
3,j与空格匹配,那么i就要与j-1匹配了,由dp[i][j-1]转移过来。
dp的初始值,dp[i][0]与dp[0][i]分别表示串1和串2的第i个字符与空格匹配
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=1e9+;
const ll N=+;
ll dp[N][N];char s1[N],s2[N];
ll mp[N][N];
void inll()
{
mp['A']['A']= ;
mp['A']['C']=-;
mp['A']['G']=-;
mp['A']['T']=-;
mp['A'][] =-; mp['C']['A']=-;
mp['C']['C']= ;
mp['C']['G']=-;
mp['C']['T']=-;
mp['C'][] =-; mp['G']['A']=-;
mp['G']['C']=-;
mp['G']['G']= ;
mp['G']['T']=-;
mp['G'][] =-; mp['T']['A']=-;
mp['T']['C']=-;
mp['T']['G']=-;
mp['T']['T']= ;
mp['T'][] =-; mp[]['A']=-;
mp[]['C']=-;
mp[]['G']=-;
mp[]['T']=-;
}
void solve()
{
memset(dp,,sizeof dp);
ll n;
ll m;
cin>>n;
cin>>s1+;
cin>>m;
cin>>s2+;
for(ll i=;i<=n;i++) dp[i][]=dp[i-][]+mp[s1[i]][]; for(ll i=;i<=m;i++) dp[][i]=dp[][i-]+mp[][s2[i]]; for(ll i=;i<=n;i++)
{
for(ll j=;j<=m;j++)
{
dp[i][j]=max(dp[i-][j]+mp[s1[i]][],dp[i][j-]+mp[][s2[j]]);
dp[i][j]=max(dp[i-][j-]+mp[s1[i]][s2[j]],dp[i][j]);
}
}
cout<<dp[n][m]<<endl;
}
int main()
{
ios::sync_with_stdio();
inll();
ll t;
cin>>t;
while(t--) solve();
return ;
}
杭电1080 J - Human Gene Functions的更多相关文章
- 杭电20题 Human Gene Functions
Problem Description It is well known that a human gene can be considered as a sequence, consisting o ...
- 【POJ 1080】 Human Gene Functions
[POJ 1080] Human Gene Functions 相似于最长公共子序列的做法 dp[i][j]表示 str1[i]相应str2[j]时的最大得分 转移方程为 dp[i][j]=max(d ...
- POJ 1080:Human Gene Functions LCS经典DP
Human Gene Functions Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18007 Accepted: ...
- poj 1080 ——Human Gene Functions——————【最长公共子序列变型题】
Human Gene Functions Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 17805 Accepted: ...
- poj 1080 Human Gene Functions(lcs,较难)
Human Gene Functions Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 19573 Accepted: ...
- Human Gene Functions
Human Gene Functions Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18053 Accepted: 1004 ...
- hdu1080 Human Gene Functions() 2016-05-24 14:43 65人阅读 评论(0) 收藏
Human Gene Functions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- POJ 1080 Human Gene Functions -- 动态规划(最长公共子序列)
题目地址:http://poj.org/problem?id=1080 Description It is well known that a human gene can be considered ...
- Human Gene Functions POJ 1080 最长公共子序列变形
Description It is well known that a human gene can be considered as a sequence, consisting of four n ...
随机推荐
- 新手版超详细LoadRunner12完整安装+汉化过程
01下载 首先从百度网盘获取到这几个文件(网盘地址会附在文末,过期请联系): 我安装的是社区版+中文汉化过的,使用我只下载了第一个和第三个文件,下面我将讲一下如何安装. 02安装社区版 1.选择“ ...
- hdu3038加权(扩展)并查集
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/3038/ 参考博客: https://blog.csdn.net/weixin_44580710/article/ ...
- python课程体系是怎么样的?
好的python课程体系是怎么样的?Python从1991年走到今天,已经有了28年的历史了,在开发行业来说也是老江湖了,那么python为什么可以在开发行业屹立不倒呢?其实python最吸引程序员的 ...
- TensorFlow Windows 安装
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 本系列教程将手把手带您从零开始学习Tensorflow,并最终通过 ...
- 使用Python+OpenCV进行图像处理(三)| 视觉入门
检测是计算机视觉任务中的主要任务之一,而且应用很广泛.检测技术可以帮助人类检测那些容易被肉眼忽略的错误:也可以"帮助"自动驾驶汽车感知空间信息.无疑自动化的检测技术的广泛应用将为我 ...
- SVN: Cleanup failed update报错 文件被锁定lock办法,cleanup 失效报错。
按照如下办法即可解决: 下载文件链接: https://pan.baidu.com/s/1Ump1BFihbX8izyAA4by5dA 提取码: ftsd 复制这段内容后打开百度网盘手机App,操作更 ...
- 使用tensorflow实现cnn进行mnist识别
第一个CNN代码,暂时对于CNN的BP还不熟悉.但是通过这个代码对于tensorflow的运行机制有了初步的理解 ''' softmax classifier for mnist created on ...
- CVE-2020-2551复现过程
项目地址 cnsimo/CVE-2020-2551 CVE-2020-2551 weblogic iiop 反序列化漏洞 该项目的搭建脚本在10.3.6版本经过测试,12版本未测试. 环境 kali+ ...
- LinuxNFS网络文件系统
LinuxNFS网络文件系统 首先需要准备四台机器,分别为以下服务器 NAS-Server-0 IP:192.168.254.10 Web-Server-1 IP:192.168.254.11 Web ...
- Spring IOC/ AOP 笔记
扫描 Bean 以下主要是使用基于注解方式配置 组件扫描(一般用于自己写的类) 添加 @Component 注解,被扫描到后自动作为 Bean 组件 @ComponentScan 扫描配置的位置,将添 ...