vijos1111(裸的最长公共子序列)

链接:www.vijos.org/p/1111

题解:好久没有写最长公共子序列了,这题就当是复习了。求出最长公共子序列,然后用两个单词的总长度减去最长公共子序列

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=101;
int dp[maxn][maxn];
char a[maxn],b[maxn];
int main()
{while(cin>>a>>b){int n=strlen(a);int m=strlen(b);for(int i=0;i<n;i++)     //最长公共子序列模板 for(int j=0;j<m;j++){if(a[i]==b[j])dp[i+1][j+1]=dp[i][j]+1;elsedp[i+1][j+1]=max(dp[i][j+1],dp[i+1][j]);}cout<<n+m-dp[n][m]<<endl;}return 0;
}

vijos1680(最长公共子序列的变形)

链接:www.vijos.org/p/1680

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int maxn=2001;
int dp[maxn][maxn];
char a[maxn],b[maxn];
int minx(int x,int y,int z)
{int ab=x;if(y<ab)   ab=y;if(z<ab)    ab=z;return ab;
}
int main()
{int k;while(cin>>a>>b>>k){int n=strlen(a);int m=strlen(b);for(int i=0;i<n;i++)dp[i+1][0]=dp[i][0]+k;for(int i=0;i<m;i++)dp[0][i+1]=dp[0][i]+k;for(int i=0;i<n;i++)for(int j=0;j<m;j++)dp[i+1][j+1]=minx(dp[i][j+1]+k,dp[i+1][j]+k,dp[i][j]+abs(a[i]-b[j]));cout<<dp[n][m]<<endl;}return 0;
}

vijos 1264(最长公共上升序列)

链接:www.vijos.org/p/1264

题解:用dp[i,j]表示a序列的前i个为结尾和以b序列的第j个为结尾的最长上升公共序列长度。则:

dp[i,j]=max{dp[i-1,k]}+1 | (a[i]=b[j]) and (b[k]<b[j])
dp[i,j]=dp[i-1,j] | (a[i]<>b[j])

程序里面在j循环顺带着就找到了最小的k。对于所有小于a[i]的b[k],必定在a[i]=b[j]时小于b[j],所以满足了约束条件。
最后再把i那维给降调。(为什么没有滚动,因为b[k]<>a[i],所dp[k]必定没有没修改)

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=501;
int dp[maxn];
int a[maxn],b[maxn];
int main()
{int t;cin>>t;while(t--){int n,m;cin>>n;for(int i=1;i<=n;i++)scanf("%d",&a[i]);cin>>m;for(int i=1;i<=m;i++)scanf("%d",&b[i]);memset(dp,0,sizeof(dp));for(int i=1;i<=n;i++)   //最长上升公共序列 {int mx=0;for(int j=1;j<=m;j++){if(a[i]>b[j])mx=max(mx,dp[j]);else if(a[i]==b[j])dp[j]=max(mx+1,dp[j]);}}int mx=0;for(int i=1;i<=m;i++)if(mx<dp[i])mx=dp[i];cout<<mx<<endl;}return 0;
}

转载于:https://www.cnblogs.com/wolf940509/p/6617129.html

DP专辑之最长公共子序列及其变形相关推荐

  1. hdu1243 dp (类最长公共子序列)

    题意:射击演习中,已知敌人出现的种类顺序,以及自己的子弹种类顺序,当同种类的子弹打到同种类的敌人时会得到相应分数,问最多能得多少分. 这题的题意很好理解,而且模型也很常见,是带权值的类最长公共子序列问 ...

  2. 最长公共子序列 【DP】+【最长公共子序列】

    最长公共子序列 时间限制: 3000 ms  |            内存限制: 65535 KB 难度: 3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列. tip ...

  3. [dp]leetcode1143:最长公共子序列LCS (medium)

    题目: 题解: 动态规划的经典例题,可参考晴神的算法笔记 首先先使用暴力法思考吧,设t1和t2的长度分别为m和n,那么对两个字符串中的每个字符,分别只有选和不选两个决策,而得到两个子序列后,比较两个子 ...

  4. [DP] bzoj2423: [HAOI2010]最长公共子序列

    bzoj2423: [HAOI2010]最长公共子序列:https://www.lydsy.com/JudgeOnline/problem.php?id=2423 DP 神啊(DP都是神奇的东西) 第 ...

  5. 最长公共子序列(C语言)

    任务描述 本关任务:编写一个求最长公共子序列的程序. 相关知识 两个序列A[m]=(a1​,...,am​),B[n]=(b1​,b2​,...,bn​),它的公共子序列是C[k]=(c1​,..., ...

  6. 2192-Zipper 求最长公共子序列的解题报告

    主要的思考方向就是求dp里面的最长公共子序列.至于字符串本身的判别并不是重点. 根据网上poj的分类,这个题是dp求最长公共子序列,其实用暴力的方法也能通过.暴力的方法比较简单就不多说了.主要讲讲dp ...

  7. Human Gene Functions(最长公共子序列变形题)

    [题目]:问题 B:  Human Gene Functions [来源]:点击打开链接 [解法]:这个题是最长公共子序列的变形题. 1.确定状态:状态表示显然是用二维数组表示DP[i][j]当前i和 ...

  8. 最长公共子序列长度的四种解法

    一.题目:求两个字符序列的最长公共字符子序列.给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence).比如字符串1:BDCABA:字符串2:ABCBDAB, ...

  9. 动态规划示例汇总-Java版(组合硬币、跳台阶、最小路径和、最长递增子序列、最长公共子序列、01背包问题、最小编辑代价)

    动态规划算法示例汇总-Java版 组合硬币 Java解题-暴力搜索 Java解题-记忆搜索 Java解题-动态规划(两种写法) 跳台阶 Java解题-暴力递归 Java解题-动态规划 矩阵最小路径和 ...

最新文章

  1. 招募 | 《大数据实践课》课程实践企业合作项目
  2. Linux 运维工程师的六类好习惯
  3. request对象方法详解
  4. list修改元素的值_Python 到底是值传递还是引用传递
  5. Python字典理解
  6. No changes detected解决方案
  7. zigbee无线通信数码管实验、usbDongle抓包、发字符串
  8. linux中为文件赋读写权限
  9. 总结1-深度学习-基础知识学习
  10. Redis的数据类型及其常用命令
  11. 那些让人忍不住推荐的思维导图软件
  12. Android自动化测试框架Robotium
  13. axure能做剪切蒙版吗_***自动售货机能做吗
  14. C语言switch练习之输入某年某月某日,判断这一天是这一年的第几天。
  15. python 模块相互import
  16. OCP认证培训学校哪家比较好?您知道怎么选OCP培训机构吗
  17. 网站提示HTTP503Service Unavailable的处理办法
  18. 磁共振功能成像BOLD-fMRI原理
  19. 科学教育类毕业论文文献都有哪些?
  20. Linux忘记root密码解决方法

热门文章

  1. java 微信jssdk签名_JAVA生成微信JSSDK接口签名
  2. 【Node.js】serve 实现目录浏览服务
  3. android分辨率对应关系,android各dpi与分辨率的对应关系
  4. mysql 自己写数据库,自己写了一个简单的mysql数据库连接类
  5. mysql重装远程服务未_CentOS 7系统安装与远程连接MySQL(5.7)
  6. amd一点也不yes_A粉的狂欢,AMD显卡也翻身了,3A平台不再是笑话了,AMD YES!
  7. 怎么查看电脑硬盘序列号
  8. 还在用Matplotlib? 又一可视化神器pyecharts登场
  9. 中科院信工所经验_2020计算机保研经验贴!(北航、北邮、中科院)
  10. 学python还是不会编程_你真的不学Python吗?学习Python的四大理由!