题目转自hdu 1080,题目传送门


题目大意:

不想翻译!


解题思路:

其实就是一道变异的求lcs(Longest common subsequence 最长公共子序列)的题

不过,它的依据是下面这张图:

所以,需要一个数组来存规则:

int ta[][]={
{,-,-,-,-},
{-,,-,-,-},
{-,-,,-,-},
{-,-,-,,-},
{-,-,-,-,}
};

同时,需要把每个字母对应成一个数字

处理字母对应代码如下:

int get_init(char s)
{
if(s=='A') return ;
else if(s=='C') return ;
else if(s=='G') return ;
else if(s=='T') return ;
else return ;
}

但有是由于它的计分标准要按照那个表计算

所以我们要通过函数来计算所对应的分值:

int get_value(char s1,char s2)
{
int x=get_init(s1);
int y=get_init(s2);
return ta[x][y];
}

但是,令人头秃的是如何初始化......

于是,思考了0.5h后,我放弃了

后来,我去问了lhc学长(学长博客点此,被迫推荐)

然后这位大佬看了题,没过10min就读懂了

1min后,初始化代码就被他写出来了,如下:

for(int i=;i<=l1;i++) dp[i][]=dp[i-][]+get_value(s1[i],'-');
for(int i=;i<=l2;i++) dp[][i]=dp[][i-]+get_value('-',s2[i]);

p.s.这代码我可看了0.25h才看懂,大佬真的很nb

然后随便写一个n2的dp就可以愉快地AC了......(愉快吗?)


AC代码如下:

#include<iostream>
#include<stdio.h>
#include<string.h>
#define maxn 105
using namespace std;
char s;
char s1[maxn],s2[maxn];
int T,l1,l2;
int dp[maxn][maxn];
int ta[][]={
{,-,-,-,-},
{-,,-,-,-},
{-,-,,-,-},
{-,-,-,,-},
{-,-,-,-,}
};
int get_init(char s)
{
if(s=='A') return ;
else if(s=='C') return ;
else if(s=='G') return ;
else if(s=='T') return ;
else return ;
}
int get_value(char s1,char s2)
{
int x=get_init(s1);
int y=get_init(s2);
return ta[x][y];
}
void dp_lcs(int l1,int l2)
{
for(int i=;i<=l1;i++)
for(int j=;j<=l2;j++)
dp[i][j]=max(dp[i-][j-]+get_value(s1[i],s2[j]),max(dp[i-][j]+get_value(s1[i],'-'),dp[i][j-]+get_value('-',s2[j])));
}
int main()
{
scanf("%d",&T);
while(T--)
{
memset(dp,,sizeof(dp));
scanf("%d%s",&l1,s1+);
scanf("%d%s",&l2,s2+);
dp[][]=;
for(int i=;i<=l1;i++) dp[i][]=dp[i-][]+get_value(s1[i],'-');
for(int i=;i<=l2;i++) dp[][i]=dp[][i-]+get_value('-',s2[i]);
dp_lcs(l1,l2);
printf("%d\n",dp[l1][l2]);
}
return ;
}

码风清奇,不喜勿喷

从这道题我们可以看出,有几个大佬当朋友还是有用的......

DP问题(3) : hdu 1080的更多相关文章

  1. HDU 1080 DP

    匹配两个人相似度. A,G,C.T.每两个都会有一个相应的值,给出两串基因.长度能够不一样,能够在基因中间加_使两串长度一样.然后有一个相应值.求最大相应值. 先做出相应的表 DP方程: x=dp[i ...

  2. hdu 1080 dp(最长公共子序列变形)

    题意: 输入俩个字符串,怎样变换使其所有字符对和最大.(字符只有'A','C','G','T','-') 其中每对字符对应的值如下: 怎样配使和最大呢. 比如: A G T G A T G -  G ...

  3. hdu 1080 Human Gene Functions(DP)

    题意: 人类基因由A.C.G.T组成. 有一张5*5的基因表.每格有一个值,叫相似度.例:A-C:-3.意思是如果A和C配对, 则它俩的相似度是-3[P.S.:-和-没有相似度,即-和-不能配对] 现 ...

  4. HDU 1080

    http://acm.hdu.edu.cn/showproblem.php?pid=1080 二维最长公共子序列 #include <iostream> #include <cstd ...

  5. 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题

    [HDU  3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...

  6. DP问题(2) : hdu 1421

    题目转自hdu 1421,题目传送门 题目大意: 给你n个物品,你要搬走2*k个(也就是搬k次) 每次搬需要花费v,v=(ai-aj)2 (i表示左手拿的物品重量,j表示右手拿的物品的重量) 要求所有 ...

  7. DP问题(1) : hdu 2577

    题目转自hdu 2577,题目传送门 题目大意: 现给你n个区分大小写的字符串,大小写可用Caps Lock和shift切换(学过计算机的都知道) 但是有一点需要注意(shift是切换,若现在是大写锁 ...

  8. dp or 贪心 --- hdu : Road Trip

    Road Trip Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users: 29 ...

  9. HDU 1080 Human Gene Functions

    最长公共子序列的变形 题目大意:给出两个基因序列,求这两个序列的最大相似度. 题目中的表格给出了两两脱氧核苷酸的相似度. 状态转移方程为: dp[i][j] = max(dp[i-1][j]+Simi ...

随机推荐

  1. CAS单点登录之支持数据库认证

    本博客介绍一下基于CAS4.2.7的配置,之前博客CAS4.2.7服务端配置已经介绍了怎么部署CAS服务端,不过在登录机制是用固定的账号密码登录,实际项目肯定不可以这样做,所以本博客怎么配置CAS服务 ...

  2. centos上tcp抓包

    tcpdump host 10.1.131.75 -i eth0  -w data.cap 其中,10.1.131.75上目标机器的IP,eth0上网卡名称,data.cap上抓包数据写入的文件.

  3. UVA 291 The House Of Santa Claus DFS

    题目: In your childhood you most likely had to solve the riddle of the house of Santa Claus. Do you re ...

  4. Linux安装centos,网络net8模式ping不通www.baidu.com或者ping不通主机

    1.Linux安装centos,网络net8模式ping不通www.baidu.com或者ping不通主机. 我使用的是net8模式.配置如下所示,保证可以ping通www.baidu.com或者pi ...

  5. SAP-简单的OALV演示练习

    接上一篇传统ALV:https://www.cnblogs.com/BruceKing/p/11320165.html. 首先介绍下什么是ALV,在R/3 4.6C之前ALV全称为ABAP List ...

  6. NET 特性(Attribute)

    NET 特性(Attribute) 转自 博客园(Fish) 特性(Attribute):是用于在运行时传递程序中各种元素(比如类.方法.结构.枚举.组件等)的行为信息的声明性标签. 您可以通过使用特 ...

  7. Flask笔记:文件上传

    文件上传 enctype:在HTML中的form表单中form标签默认是`enctype="application/x-www-form-urlencoded"`,在文件上传时需要 ...

  8. FastReport的模板文件frx文件啊怎样打开并编辑修改

    场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  9. idea修改filetype

    settings/editor/file types把不小心改成Text类型的文件的wildcard去掉即可.

  10. element-ui Rate组件源码分析整理笔记(十三)

    Rate组件源码比较简单,有添加部分注释 main.vue <template> <!--valuenow当前的评分 valuetext当前显示的文本--> <div c ...