题目链接:http://noi.openjudge.cn/ch0206/2000/

题解:
  裸题,不解释(题目有毒)

  1. #include<cstdio>
  2. #include<algorithm>
  3. using namespace std;
  4. #define MAXN 10010
  5. int lena,lenb,a[MAXN],b[MAXN],ans1,ans2[MAXN];
  6. struct node
  7. {
  8. int x,nextx,nexty;
  9. }f[MAXN][MAXN];
  10. int main()
  11. {
  12. scanf("%d",&lena);for(int i=;i<=lena;++i)scanf("%d",&a[i]);
  13. scanf("%d",&lenb);for(int i=;i<=lenb;++i)scanf("%d",&b[i]);
  14. swap(a,b);
  15. int t=lena;lena=lenb;lenb=t;
  16. for(int i=;i<=lena;++i)
  17. {
  18. node max=(node){,,};
  19. for(int j=;j<=lenb;++j)
  20. {
  21. f[i][j]=(node){f[i-][j].x,i-,j};
  22. if(b[j]<a[i]&&f[i-][j].x>max.x)max=(node){f[i-][j].x,i-,j};
  23. else if(a[i]==b[j])f[i][j]=(node){max.x+,max.nextx,max.nexty};
  24. }
  25. }
  26. int k1=,k2;
  27. for(int i=;i<=lenb;++i)
  28. {
  29. if(f[lena][i].x>k1)
  30. {
  31. k1=f[lena][i].x;
  32. k2=i;
  33. }
  34. }
  35. printf("%d\n",k1);
  36. int x=lena,y=k2;
  37. while(x&&y)
  38. {
  39. node temp=f[x][y];
  40. if(f[temp.nextx][temp.nexty].x==temp.x-)ans2[++ans1]=a[x];
  41. x=temp.nextx;y=temp.nexty;
  42. }
  43. for(int i=ans1;i>=;--i)printf("%d ",ans2[i]);
  44. }

openjudge-NOI 2.6-2000 最长公共子上升序列的更多相关文章

  1. 【noi 2.6_2000】&【poj 2127】 最长公共子上升序列 (DP+打印路径)

    由于noi OJ上没有Special Judge,所以我是没有在这上面AC的.但是在POJ上A了. 题意如标题. 解法:f[i][j]表示a串前i个和b串前j个且包含b[j]的最长公共上升子序列长度 ...

  2. 使用后缀数组寻找最长公共子字符串JavaScript版

    后缀数组很久很久以前就出现了,具体的概念读者自行搜索,小菜仅略知一二,不便讨论. 本文通过寻找两个字符串的最长公共子字符串,演示了后缀数组的经典应用. 首先需要说明,小菜实现的这个后缀数组算法,并非标 ...

  3. uva 10066 The Twin Towers (最长公共子)

    uva 10066 The Twin Towers 标题效果:最长公共子. 解题思路:最长公共子. #include<stdio.h> #include<string.h> # ...

  4. LIS(最长的序列)和LCS(最长公共子)总结

    LIS(最长递增子序列)和LCS(最长公共子序列)的总结 最长公共子序列(LCS):O(n^2) 两个for循环让两个字符串按位的匹配:i in range(1, len1) j in range(1 ...

  5. uva 10192 Vacation(最长公共子)

    uva 10192 Vacation The Problem You are planning to take some rest and to go out on vacation, but you ...

  6. POJ 3356 AGTC(最长公共子)

    AGTC Description Let x and y be two strings over some finite alphabet A. We would like to transform  ...

  7. KMP该算法解释(最长公共子)

    一个:介绍KMP算法之前,首先解释一下BF算法 (1)BF算法(传统的匹配算法,是最简单的算法) BF算法是一种常见的模式匹配算法,BF该算法的思想是目标字符串S模式串的第一个字符P的第一个字符,以匹 ...

  8. POJ 2774 后缀数组:查找最长公共子

    思考:其实很easy.就在两个串在一起.通过一个特殊字符,中间分隔,然后找到后缀数组的最长的公共前缀.然后在两个不同的串,最长是最长的公共子串. 注意的是:用第一个字符串来推断是不是在同一个字符中,刚 ...

  9. 自然语言处理之LCS最长公共子子序列

    #!一个序列S任意删除若干个字符得到的新序列T,则T叫做S的子序列 注意,这个和最长公共字串不一样,最长公共子串要求连续. 1.算法公式: def lcs(a,b): lena = len(a) le ...

随机推荐

  1. 后缀树的线性在线构建-Ukkonen算法

    Ukkonen算法是一个非常直观的算法,其思想精妙之处在于不断加字符的过程中,用字符串上的一段区间来表示一条边,并且自动扩展,在需要的时候把边分裂.使用这个算法的好处在于它非常好写,代码很短,并且它是 ...

  2. C++ Win系统下的调试

    有的时候我们找不出错误在哪里,这时候我们需要调试一遍看看到底是哪里出了问题:我们需要分布查看程序运行情况. 这时候我们用到了调试这样一个神奇的东西. 一.基于Dev cpp环境下的调试 Dev cpp ...

  3. 【BZOJ1493】【NOI2007】项链工厂(线段树)

    [BZOJ1493]项链工厂(线段树) 题面 BZOJ 洛谷 Description T公司是一家专门生产彩色珠子项链的公司,其生产的项链设计新颖.款式多样.价格适中,广受青年人的喜爱. 最近T公司打 ...

  4. Zend Hash table 详解--转

    原文地址:http://www.phppan.com/2009/12/zend-hashtable/ 在PHP的Zend引擎中,有一个数据结构非常重要,它无处不在,是PHP数据存储的核心,各种常量.变 ...

  5. 【agc016D】XOR Replace

    Portal --> agc016D Description ​ 一个序列,一次操作将某个位置变成整个序列的异或和,现在给定一个目标序列,问最少几步可以得到目标序列 ​ Solution ​ 翀 ...

  6. 框架----Django之Ajax全套实例(原生AJAX,jQuery Ajax,“伪”AJAX,JSONP,CORS)

    一.原生AJAX,jQuery Ajax,“伪”AJAX,JSONP 1. 浏览器访问 http://127.0.0.1:8000/index/ http://127.0.0.1:8000/fake_ ...

  7. 课程14:get和post是神马

    http://www.codeschool.cn/lesson/14.html get和post是神马? get和post是http中两种最常用到的请求类型 简单理解get请求 get请求多用于获取信 ...

  8. Spring MVC @RequestParam

    案例来说明 @RequestMapping("user/add") public String add(@RequestParam("name") String ...

  9. 图像处理之直方图均衡化及C源码实现

    1 直方图均衡化(Histogram Equalization)简介 图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法.直方图拉伸和直方图均衡化是两种最常见的间接 ...

  10. NYOJ--69

    数的长度 原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=69 分析:先看看求n!的朴素算法,用大整数乘法来实现. #include< ...