openjudge-NOI 2.6-2000 最长公共子上升序列
题目链接:http://noi.openjudge.cn/ch0206/2000/
题解:
裸题,不解释(题目有毒)
#include<cstdio>
#include<algorithm>
using namespace std;
#define MAXN 10010
int lena,lenb,a[MAXN],b[MAXN],ans1,ans2[MAXN];
struct node
{
int x,nextx,nexty;
}f[MAXN][MAXN];
int main()
{
scanf("%d",&lena);for(int i=;i<=lena;++i)scanf("%d",&a[i]);
scanf("%d",&lenb);for(int i=;i<=lenb;++i)scanf("%d",&b[i]);
swap(a,b);
int t=lena;lena=lenb;lenb=t;
for(int i=;i<=lena;++i)
{
node max=(node){,,};
for(int j=;j<=lenb;++j)
{
f[i][j]=(node){f[i-][j].x,i-,j};
if(b[j]<a[i]&&f[i-][j].x>max.x)max=(node){f[i-][j].x,i-,j};
else if(a[i]==b[j])f[i][j]=(node){max.x+,max.nextx,max.nexty};
}
}
int k1=,k2;
for(int i=;i<=lenb;++i)
{
if(f[lena][i].x>k1)
{
k1=f[lena][i].x;
k2=i;
}
}
printf("%d\n",k1);
int x=lena,y=k2;
while(x&&y)
{
node temp=f[x][y];
if(f[temp.nextx][temp.nexty].x==temp.x-)ans2[++ans1]=a[x];
x=temp.nextx;y=temp.nexty;
}
for(int i=ans1;i>=;--i)printf("%d ",ans2[i]);
}
openjudge-NOI 2.6-2000 最长公共子上升序列的更多相关文章
- 【noi 2.6_2000】&【poj 2127】 最长公共子上升序列 (DP+打印路径)
由于noi OJ上没有Special Judge,所以我是没有在这上面AC的.但是在POJ上A了. 题意如标题. 解法:f[i][j]表示a串前i个和b串前j个且包含b[j]的最长公共上升子序列长度 ...
- 使用后缀数组寻找最长公共子字符串JavaScript版
后缀数组很久很久以前就出现了,具体的概念读者自行搜索,小菜仅略知一二,不便讨论. 本文通过寻找两个字符串的最长公共子字符串,演示了后缀数组的经典应用. 首先需要说明,小菜实现的这个后缀数组算法,并非标 ...
- uva 10066 The Twin Towers (最长公共子)
uva 10066 The Twin Towers 标题效果:最长公共子. 解题思路:最长公共子. #include<stdio.h> #include<string.h> # ...
- LIS(最长的序列)和LCS(最长公共子)总结
LIS(最长递增子序列)和LCS(最长公共子序列)的总结 最长公共子序列(LCS):O(n^2) 两个for循环让两个字符串按位的匹配:i in range(1, len1) j in range(1 ...
- uva 10192 Vacation(最长公共子)
uva 10192 Vacation The Problem You are planning to take some rest and to go out on vacation, but you ...
- POJ 3356 AGTC(最长公共子)
AGTC Description Let x and y be two strings over some finite alphabet A. We would like to transform ...
- KMP该算法解释(最长公共子)
一个:介绍KMP算法之前,首先解释一下BF算法 (1)BF算法(传统的匹配算法,是最简单的算法) BF算法是一种常见的模式匹配算法,BF该算法的思想是目标字符串S模式串的第一个字符P的第一个字符,以匹 ...
- POJ 2774 后缀数组:查找最长公共子
思考:其实很easy.就在两个串在一起.通过一个特殊字符,中间分隔,然后找到后缀数组的最长的公共前缀.然后在两个不同的串,最长是最长的公共子串. 注意的是:用第一个字符串来推断是不是在同一个字符中,刚 ...
- 自然语言处理之LCS最长公共子子序列
#!一个序列S任意删除若干个字符得到的新序列T,则T叫做S的子序列 注意,这个和最长公共字串不一样,最长公共子串要求连续. 1.算法公式: def lcs(a,b): lena = len(a) le ...
随机推荐
- XML格式化加载的时候提示Content is not allowed in prolog. Nested exception: Content is not allowed in prolog
原因:原本是.xml文件格式的内容,被你用右键,文本编辑,保存,导致格式不认了. 解决方法:下载个notepad+ 工具,用这工具打开,修改,编辑,保存,即可被继续认作xml格式.
- 51nod1238 最小公倍数之和 V3 莫比乌斯函数 杜教筛
题意:求\(\sum_{i = 1}^{n}\sum_{j = 1}^{n}lcm(i, j)\). 题解:虽然网上很多题解说用mu卡不过去,,,不过试了一下貌似时间还挺充足的,..也许有时间用phi ...
- Linux实用命令行
对于Linux命令,我在学习和使用过程中是有一个循序渐进的过程的.适合小白学习快速使用.大笑 跳转目录:cd +路径 例如:cd /home/workspace 查看某个文件,常用的是查看日志:tai ...
- 【bzoj3669】魔法森林
Portal-->bzoj3669 Solution 愉悦智力康复ing 这题的话有两个比较关键的地方 首先是答案肯定是原图的某个生成树上的一条路径,那么我们考虑怎么来找这 ...
- Linux之执行命令操作20170330
介绍一下Linux系统中的代码执行shell等命令的几种操作方式: 一.标准流管道popen 该函数的原型是FILE * popen(const char* command, const char * ...
- 弄清楚CSS的匹配原理让你写出高效的CSS
用了这么多年的CSS,现在才明白CSS的真正匹配原理,不知道你是否也跟我一样?看1个简单的CSS: DIV#divBox p span.red{color:red;} 按习惯我们对这个CSS 的理解是 ...
- Linux 下 JDK + Eclipse + PyDev 安装与配置
一:JDK / JRE 环境 Eclipse 是运行于Java虚拟机中的,所以必须先安装Java环境才能进行开发测试.JRE(Java Runtime Environment)是运行环境,JDK(Ja ...
- Java项目中读取properties文件,以及六种获取路径的方法
下面1-4的内容是网上收集的相关知识,总结来说,就是如下几个知识点: 最常用读取properties文件的方法 InputStream in = getClass().getResourceAsStr ...
- leetcode 刷题日志 2018-03-26
58. 最后一个单词的长度 分析:找最后一个非空格,向前找 int lengthOfLastWord(string s) { int i = s.find_last_not_of(' '); int ...
- Spring Boot 使用IntelliJ IDEA创建一个web开发实例(一)
.新建项目File-->New-->Project-->Spring Initializr 点击Finish,一个Spring Boot web应用就创建好了.