/****************************************************************************************************
DP LCS,主要问题是那个i匹配0和0匹配j的处理,就是说i,j一开始就匹配'-'的情况,因为涉及到j匹配'-'的问题,所以不能
去压缩成一维空间。。。
****************************************************************************************************/
#include <iostream>
#include <iomanip>
#include <functional>
#include <algorithm>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <sstream>
#include <utility>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <limits>
#include <memory>
#include <string>
#include <vector>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
using namespace std;
#define LOWBIT(x) ( (x) & ( (x) ^ ( (x) - 1 ) ) )
#define CLR(x, k) memset((x), (k), sizeof(x))
#define CPY(t, s) memcpy((t), (s), sizeof(s))
#define SC(t, s) static_cast<t>(s)
#define LEN(s) static_cast<int>( strlen((s)) )
#define SZ(s) static_cast<int>( (s).size() )
typedef double LF;
//typedef long long LL; //GNU C++
//typedef unsigned long long ULL;
typedef __int64 LL; //Visual C++ 2010
typedef unsigned __int64 ULL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
typedef pair<double, double> PDD;
typedef map<int, int>::iterator MI;
typedef vector<int>::iterator VI;
typedef list<int>::iterator LI;
typedef set<int>::iterator SI;
template <typename T>
T sqa(const T &x)
{
return x * x;
}
template <typename T>
T gcd(T a, T b)
{
if (!a || !b)
{
return max(a, b);
}
T t;
while (t = a % b)
{
a = b;
b = t;
}
return b;
}
template <typename T>
T ext_gcd(T a, T b, T &x, T &y)
{
if (!b)
{
x = 1;
y = 0;
return a;
}
T d = ext_gcd(b, a % b, x, y);
T t = x;
x = y;
y = t - a / b * y;
return d;
}
template <typename T>
T invmod(T a, T p)
{
LL inv, y;
ext_gcd(a, p, inv, y);
inv < 0 ? inv += p : 0;
return inv;
}
const int INF_INT = 0x3f3f3f3f;
const LL INF_LL = 0x7fffffffffffffffLL; //15f
const double oo = 10e9;
const double eps = 10e-7;
const double PI = acos(-1.0);
#define ONLINE_JUDGE
const int MAXN = 1004;
const int MAXC = 1 << 8;
int test, n, m;
string str, pat;
int dp[MAXN][MAXN];
int hs[MAXC][MAXC];
void ace()
{
hs['A']['A'] = 5; hs['A']['C'] = -1; hs['A']['G'] = -2; hs['A']['T'] = -1; hs['A']['-'] = -3;
hs['C']['A'] = -1; hs['C']['C'] = 5; hs['C']['G'] = -3; hs['C']['T'] = -2; hs['C']['-'] = -4;
hs['G']['A'] = -2; hs['G']['C'] = -3; hs['G']['G'] = 5; hs['G']['T'] = -2; hs['G']['-'] = -2;
hs['T']['A'] = -1; hs['T']['C'] = -2; hs['T']['G'] = -2; hs['T']['T'] = 5; hs['T']['-'] = -1;
hs['-']['A'] = -3; hs['-']['C'] = -4; hs['-']['G'] = -2; hs['-']['T'] = -1; hs['-']['-'] = -INF_INT;
for (cin >> test; test--; )
{
cin >> n >> str >> m >> pat;
dp[0][0] = 0;
for (int i = 1; i <= n; ++i)
{
dp[i][0] = dp[i - 1][0] + hs[ str[i - 1] ][ '-' ];
}
for (int j = 1; j <= m; ++j)
{
dp[0][j] = dp[0][j - 1] + hs[ '-' ][ pat[j - 1] ];
}
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= m; ++j)
{
dp[i][j] = max( dp[i - 1][j - 1] + hs[ str[i - 1] ][ pat[j - 1] ], //str[i-1]和pat[j-1]去匹配
max( dp[i - 1][j] + hs[ str[i - 1] ][ '-' ], dp[i][j - 1] + hs[ '-' ][ pat[j - 1] ]) );
//str[i - 1]和'-'匹配 '-'和pat[j - 1]匹配
}
}
cout << dp[n][m] << endl;
}
return ;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif
ace();
return 0;
}相关推荐
python轮胎缺陷检测_基于深度学习的轮胎缺陷无损检测与分类技术研究
基于深度学习的轮胎缺陷无损检测与分类技术研究【摘要】:随着汽车行业快速发展及汽车保有量的持续增长,大大增加了对轮胎的需求,而轮胎质量在很大程度上决定了轮胎的使用寿命,也是在行驶过程中对人们生命财产安全的保障,同时对轮胎进行在线质量检测也便于轮胎生产企业及时发现生产线中存在的不合格产品,以此来调整机械设备甚至轮胎的生产工艺,避免造成生产材料的浪费。因此,检测轮胎质量是轮胎生产过程中必不可缺少的一部分...
hdu1080 Human Gene Functions(LCS变形)
Human Gene Functions Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1338Accepted Submission(s): 767 Problem Description It is well ...
私彩视频开奖动画直播源码内部核心技术解析及修改可增加后台操控-持续更新文章!
其实在此很感谢能做出H5开奖系统的码农们,而我本人也喜欢分解此类的东西。 因为特殊原因,该东西本人就不做图片展示,以防他人商业化。 借用开奖摇奖代码首先分解首页index文件。代码如下:(后面持续在原有的作品上添加后台操作) 代码里写的//.....是我的注明代码的所需。 <!DOCTYPE html> <html> <head> <...
hdu1080(最长公共子序列变形)
给定一个相似性矩阵 给定两个基因序列(由AGCT组成),填充空格‘ ’,使得相似性分数最高 状态转移,其中dp[i,j]表示s1[i]和s2[j]处能取到的最大分数(i=1,2,3...len1,j=1,2,3,..,len2) dp[i,j]=max(max(dp[i-1,j-1]+table[i,j],dp[i,j-1]+table[i]['-']),dp[i-1,j]+table[
BK7238(XH-WB3S)固件烧录实战:从AT固件选择到稳定下载全解析
本文详细解析了BK7238(XH-WB3S)模组固件烧录的全过程,从AT固件版本选择到稳定下载的实战技巧。重点介绍了烧录前的准备工作、硬件连接的正确姿势、烧录软件的实战技巧以及疑难问题排查指南,帮助开发者高效完成BK7238模组的固件烧录。
【分子指纹】化学分子指纹的概念和应用(非常重要)
分子指纹(Molecular fingerprints)可以低计算成本的方式表示大规模化学数据集中化合物的化学(结构、物理化学等)性质。它们在将化学数据集中的分子转换为适合于计算方法的一致输入格式(bit向量或数值)方面发挥着重要作用。在这篇综述中,
hdu1080
这道题困扰了我好久。其实现在wod我最开始是想不到为什么
【AI开源】Understand-Anything 完整使用教程(2026最新版)
Understand-Anything是一款基于交互式知识图谱的AI学习与开发平台,能够将代码库转化为可视化知识结构,支持语义搜索、上下文问答和全流程开发。核心功能包括代码知识图谱化、AI辅助学习和多编码代理集成。支持TypeScript/JavaScript、Python等多种语言,要求Node.js 20+和16GB以上内存。提供NPM、Docker和源码三种安装方式,支持增量更新和团队知识共享。与同类产品相比,在交互式图谱、语义搜索和AI集成方面更具优势。适用于代码学习、大型项目维护和团队协作等场景。
HDU1080(最大公共子串LCS+DP)
Human Gene Functions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1682 Accepted Submission(s): 948 Problem Description It is well
别再死磕公式了!用Python+NumPy手把手实现机器人逆运动学数值求解(附避坑指南)
本文详细介绍了如何使用Python和NumPy实现机器人逆运动学(Inverse Kinematics, IK)的数值求解方法,包括牛顿-拉弗森法、雅可比矩阵计算及奇异位形处理。通过实战代码和避坑指南,帮助开发者快速掌握现代机器人学中的核心算法,提升工程实践能力。
复古与新生:老毛子Padavan固件在旧设备上的现代化应用之旅
本文探讨了如何通过刷入Padavan固件,让小米路由器3G(R3G)等老旧设备重获新生,实现现代化应用。详细介绍了从硬件潜力分析、智能家居中枢搭建,到轻量级服务器部署和网络功能扩展的全过程,为技术爱好者提供了一条低成本、高性能的设备改造之路。
hdu 1080 (DP LCS最长公共子序列)
点击打开链接 直接模版 dp[i][j]=max( max( max( dp[i-1][j]+map[s[i]]['-'], d[i][j-1]+map['-'][ss[j]] ) , dp[i-1][j-1]+map[s[i]][ss[j]] ) , dp[i][j] ); #include"stdio.h" #include"string
4、双足机器人mpc基础概念
机器人控制实际上不是连续的,是离散的,这就是控制信号的采样周期dt,一般每1ms对机器人发起一次控制信号。一般来说,dt越小,控制器的响应速度越快,但是由于预测的精度有限,如果控制时域过长,预测的误差会逐渐累积,导致控制器的性能下降。注意:1)在程序处理时,u的维度并不是由机器人的自由度确定的,是由其变量的个数及每个变量的空间维度确定,对于双足,采用力矩和力来控制,则u的维度是“2*2*3=12”。机器人实际运动过程中表现出来的状态x,x和xd是一致的,也包括运动速度ν、角速度ω、角度θ、位置p等。
【DP|LCS】HDU-1080 Human Gene Functions
Human Gene Functions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2421 Accepted Submission(s): 1371 Problem Description It
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
hdu 1080 (DP LCS最长公共子序列)
dp[i][j]=max(max(max(dp[i-1][j]+map[s[i]]['-'], d[i][j-1]+map['-'][ss[j]]) , dp[i-1][j-1]+map[s[i]][ss[j]] ) , dp[i][j] ); View Code 1 #include<stdio.h> 2 #include<str...
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
动态规划之LCS和LIS
(一)最长公共子序列 (二)dai
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
杭电1080-Lcs+DP(**有借鉴**)
http://acm.hdu.edu.cn/showproblem.php?pid=1080 首先题意: 题目意思是:要求你必须按照给出的一个表格每一对字母对应的值。怎样才能在求出两个字符串最长子字符串的同时,得出最大的值。 具体思路:首先根据LCS的公式的出最长的子串。再根据DP的思想求出最大的值,球最大的值时可以加“-“;来保证值最大!(开始对于LCS)不太理解,有点难。 具体细节见代
HDU 1080 加权LCS
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1080 AC代码: https://github.com/Kiritow/OJ-Problems-Source/blob/master/HDOJ/1080.cpp 重点在于转置矩阵.(trans)与dp数组的状态转换.
LCS问题
最长公共子序列,给定两个长度分别为N,M的字符串A,B,求既是A的子序列,又是B的子序列的字符串的最大长度 例题1、HDU 1159 Common Subsequence Problem Description A subsequence of a given sequence is the given sequence with some elements (possible none) lef...
hdu 1080 Human Gene Functions LCS变体
LCS变体。 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1080 #include #include #include #include #include #include #include #include #include using namespace std; //最多有100个字符; char s1[105],
hdu1080解题报告
后考研刷题时代正式开始,之前练dp意犹未尽,所以先拿dp题开刀,而且找了一道跟我原专业相关的题,基因序列匹配~ http://acm.hdu.edu.cn/showproblem.php?pid=1080 当年学生物信息学在书上看到了DNA序列匹配的动态规划算法,现在终于实现了它~其实就是最长公共子序列LCS的变形题,ac代码如下: #include #include #define
hdu dp60题
准备顺序推掉杭电dp60题不管怎样立个flag23333啊喂不管怎样第一题都没有吗2333那就杭电dp59题好了2333 2017-09-04 : hdu 1011 Starship Troopers 树形dp 2017-09-06 : hdu 1024 Max Sum Plus Plus 最大m个子序列 2017-09-07 : hdu 1025 Constr
HDU1080 【LCS变形】
题意: 给你每种字符匹配的权值大小,给你两个串,长度小的串可以在小串里面添加空格和大串匹配,问你一个最大匹配权值。 思路: 有点类似于LCS吧,我们在求两个串的LCS的时候,不行的就扔掉了,在这里就是不行的就给他匹配了一个空格; dp[i][j-1] j匹配空格; dp[i-1][j] i匹配空格; dp[i-1][j-1] i和j匹
hdoj1080 Human Gene Functions(DP解决LCS问题!)
来源:http://acm.hdu.edu.cn/showproblem.php?pid=1080 类似于求最长公共字串,在dp的初始化和状态转移方程的书写上有少许差别。 dp[i][j] = dp[i-1,j] + dist[s1[i],'-']; 2、 s1取“ - ”,s2取第j个字母:dp[i][j] = dp[i,j-1] + dist['-',s2[j]]; 3、 s1取第i个
DP题目集合 && 解题报告
简单dp 递推 hdu 2084 数塔 简单从上往下递推 Gym - 101875E 滚动数组https://blog.youkuaiyun.com/castomere/article/details/97630052 Gym - 101201Bhttps://blog.youkuaiyun.com/castomere/article/details/97773403 hdu 2018 母牛的故...
hdu 1080 Human Genne Function
这道题我不会。dp感觉老是自己写不出来啊,状态转移方程不好建啊,问题抽象。 我一定可以超越其他人,其他人混得比我好,只是因为他们比我早几年工作吧。沉下心来学习,不要被世俗所打扰,守护你的高傲。 用的是dp的思想。 和求最长LCS的思路大体相似。 对于一个序列s1,s2. 用数组dp[i][j] 表示 s1 的第i个字符和s2的第j个字符 比较时最大值 ,,这时分3种情况: s1[i]
1426



被折叠的 条评论
为什么被折叠?



