动态规划法:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <fstream>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <deque>
  7. #include <vector>
  8. #include <queue>
  9. #include <string>
  10. #include <cstring>
  11. #include <map>
  12. #include <stack>
  13. #include <set>
  14. #define PI acos(-1.0)
  15. #define mem(a,b) memset(a,b,sizeof(a))
  16. #define sca(a) scanf("%d",&a)
  17. #define sc(a,b) scanf("%d%d",&a,&b)
  18. #define pri(a) printf("%d\n",a)
  19. #define lson i<<1,l,mid
  20. #define rson i<<1|1,mid+1,r
  21. #define MM 1004
  22. #define MN 1008
  23. #define INF 100000007
  24. #define eps 1e-7
  25. using namespace std;
  26. typedef long long ll;
  27. typedef unsigned long long ULL;
  28. int n1,n2,a[MM],b[MM];//a,b序列及其长度
  29. int dp[MM][MM],pre[MM][MM],lcis[MM];//lcis为最长公共上升子序列
  30. int ans=-1;//ans为最长公共上升子序列长度
  31. void getLcis()
  32. {
  33. int x=n1,y=0,cnt=1,i,j,k;
  34. mem(dp,0),mem(pre,0);
  35. for(i=1;i<=n1;i++)
  36. {
  37. k=0;
  38. for(j=1;j<=n2;j++)
  39. {
  40. if(a[i]!=b[j]) dp[i][j]=dp[i-1][j];
  41. if(a[i]>b[j]&&dp[i][j]>dp[i][k]) k=j;
  42. if(a[i]==b[j]) dp[i][j]=dp[i][k]+1,pre[i][j]=k;
  43. }
  44. }
  45. for(i=1;i<=n2;i++)
  46. if(dp[n1][i]>ans) ans=dp[n1][i],y=i;
  47. while(dp[x][y])
  48. {
  49. if(a[x]!=b[y]) x--;
  50. else lcis[ans-cnt]=b[y],cnt++,y=pre[x][y];
  51. }
  52. }
  53. int main()
  54. {
  55. sca(n1);
  56. for(int i=1;i<=n1;i++)
  57. sca(a[i]);
  58. sca(n2);
  59. for(int i=1;i<=n2;i++)
  60. sca(b[i]);
  61. getLcis();
  62. pri(ans);
  63. for(int i=0;i<ans;i++)
  64. printf("%d ",lcis[i]);
  65. puts("");
  66. return 0;
  67. }

POJ 2127 最长公共上升子序列的更多相关文章

  1. 【简单dp】poj 2127 Greatest Common Increasing Subsequence【最长公共上升子序列】【模板】

    Sample Input 5 1 4 2 5 -12 4 -12 1 2 4 Sample Output 2 1 4 题目:给你两个数字序列,求出这两个序列的最长公共上升子序列.输出最长的长度,并打表 ...

  2. POJ 1458 最长公共子序列(dp)

    POJ 1458 最长公共子序列 题目大意:给出两个字符串,求出这样的一 个最长的公共子序列的长度:子序列 中的每个字符都能在两个原串中找到, 而且每个字符的先后顺序和原串中的 先后顺序一致. Sam ...

  3. 最长公共上升子序列(codevs 2185)

    题目描述 Description 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序列了. 小沐沐说,对 ...

  4. 最长公共上升子序列(LCIS)

    最长公共上升子序列慕名而知是两个字符串a,b的最长公共递增序列,不一定非得是连续的.刚开始看到的时候想的是先用求最长公共子序列,然后再从其中找到最长递增子序列,可是仔细想一想觉得这样有点不妥,然后从网 ...

  5. ZOJ 2432 Greatest Common Increasing Subsequence(最长公共上升子序列+路径打印)

    Greatest Common Increasing Subsequence 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problem ...

  6. [CodeForces10D]LCIS(最长公共上升子序列) - DP

    Description 给定两个数列,求最长公共上升子序列,并输出其中一种方案. Input&Output Input 第一行一个整数n(0<n<=500),数列a的长度. 第二行 ...

  7. poj 2774 最长公共子串 后缀数组

    Long Long Message Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 25752   Accepted: 10 ...

  8. 最长递增子序列(lis)最长公共子序列(lcs) 最长公共上升子序列(lics)

    lis: 复杂度nlgn #include<iostream> #include<cstdio> using namespace std; ],lis[],res=; int ...

  9. codevs 2185 最长公共上升子序列

    题目链接: codevs 2185 最长公共上升子序列codevs 1408 最长公共子序列 题目描述 Description熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升 ...

随机推荐

  1. 转:ef获取某个表中的部分字段值

    我有个新闻表 id,title,body,createtime,author,click 使用ef4.1 仅仅读取 id,title,createtime 并显示在页面上. public static ...

  2. selenium_Alert

    网页测试,最避免不了的就是弹出框,但是弹出框你真的分的清吗? Alert prompt comfirm 先来认识一下这三个弹窗 代码如下 <!DOCTYPE html> <html ...

  3. java工程师学习线路图

  4. java中volatile的简单理解

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7833881.html 据说,volatile是java语言中最轻量级的并发控制方式. vo ...

  5. 【2】构建一个SSM项目结构

    初步思考一下这个项目的结构,由于是给一个比较老的公司做这个外包项目,服务器是搭建在windows操作系统上的Tomcat6.0,系统的JDK版本也是JDK1.6,都是比较旧. 数据库方面有专人负责,所 ...

  6. 洛谷 P3384 【模板】树链剖分

    树链剖分 将一棵树的每个节点到它所有子节点中子树和(所包含的点的个数)最大的那个子节点的这条边标记为"重边". 将其他的边标记为"轻边". 若果一个非根节点的子 ...

  7. vimgdb安装

    vimgdb install ************** a) You need: vim-7.3.tar.bz2 http://www.vim.org/sources.php vimgdb- (t ...

  8. [转]动态管理视图和函数 (Transact-SQL)

    动态管理视图和函数返回可用于监视服务器实例的运行状况.诊断故障以及优化性能的服务器状态信息. 重要提示 动态管理视图和函数返回特定于实现的内部状态数据. 在未来的 SQL Server 版本中,它们的 ...

  9. linux下大于2T硬盘格式化方法

    现在的硬盘很多都大于2T,但是linux自带的fdisk 工具无法格式化大于2T的磁盘,需要使用第三方工具parted,我们来看如何使用parted格式硬盘 1,可以先使用fdisk -l查看系统当前 ...

  10. js实际工作中的技能点

    1.基础知识 a.原型,原型链 b.作用域,闭包 c.异步,单线程 2.JS API a.DOM操作 b.Ajax c.事件绑定 3.开发环境 a.版本管理(git) b.模块化(require.js ...