杭电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 ...
随机推荐
- 数学-绝对值-Reverse Subarray To Maximize Array Value
2020-02-11 12:01:21 问题描述: 问题求解: 本题的难度个人感觉还是蛮大的,主要是不容易想到O(n)的解. 对于 ...a, [b, ... , c], d, ...,如果我们将其中 ...
- C语言自学网官方微信相关功能使用方法
一.微信扫描关注微信公众账号(C语言自学网),我们会不定时更新关于编程的技术文章和相关资讯,了解大佬的成长之路. 二.回复“C语言学习资料”,将显示由我们精心整理的全套C语言学习资料的下载地址及链接. ...
- python之道15
请实现一个装饰器,限制该函数被调用的频率,如10秒一次(借助于time模块,time.time())(面试题,有点难度,可先做其他) 答案 # 思路 运行不能用 import time def wra ...
- 十个python图像处理工具
介绍 如今的世界存在了大量的数据,图像数据是重要的组成部分.如果要利用这些图片,需要对图像进行处理,提高图片质量或提取图片内容信息. 图像处理的常见操作包括图像显示,基本操作如裁剪,翻转,旋转等,图像 ...
- 一文上手TensorFlow2.0(一)
目录: Tensorflow2.0 介绍 Tensorflow 常见基本概念 从1.x 到2.0 的变化 Tensorflow2.0 的架构 Tensorflow2.0 的安装(CPU和GPU) Te ...
- php _weakup()反序列化漏洞
概念&原理 序列化就是使用 serialize() 将对象用字符串的方式进行表示: 反序列化是使用 unserialize() 将序列化的字符串构造成相应的对象,为序列化的逆过程. 序列化的对 ...
- iOS NSDateFormatter性能
一.探究 NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat: ...
- k8s 集群管理和微服务 适合做啥
k8s 集群管理和微服务 适合做啥 都知道k8s是集群 适合微服务 有很多教程 但你可以先了解他能干啥 traefix 是负载均衡工具 k8s 适合部署无状态依赖的微服务 可以按需求开启多个微服务 管 ...
- [noip模拟赛]某种数列问题<dp>
某种数列问题 (jx.cpp/c/pas) 1000MS 256MB 众所周知,chenzeyu97有无数的妹子(阿掉!>_<),而且他还有很多恶趣味的问题,继上次纠结于一排妹子的排法以 ...
- Ptask公告
这是一款非常弱鸡的小程序,不喜勿喷 你们好!如在使用中有bug或者有您宝贵的建议请在下方评论区留言或者投递至我的邮箱:Mj_Ymr@outlook.com. 那么我也会不断更新,并在这里贴上各版本的下 ...