/*
首先,dp的最开始是定义状态 dp[i][j] 表示A串的前i个,与B串的前j个,并以B[j]为结尾的LCIS 的长度.
状态转移方程:
if(A[i]==B[j]) dp[i][j]=max(dp[i-1][k])+1; ( 1 <= k < j )
else dp[i][j]=dp[i-1][j];
然后选择循环顺序,就可以将算法的复杂度降为n*n.
转自:http://www.cnblogs.com/chenhuan001/archive/2013/03/26/2982677.html
PS:用一维数组来记录路径老是wa,测了好多组都是对的,从昨晚一直纠结到现在,先mark,以后看,真想砸电脑*/ #include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
#define N 550
struct node
{
int x,y;
}path[N][N];
int dp[N][N];
int s[N],t[N]; int main()
{
int t1;
while(scanf("%d",&t1)!=EOF)
{
while(t1--)
{
memset(path,,sizeof(path));
int n,m;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&s[i]);
scanf("%d",&m);
for(int i=;i<=m;i++)
scanf("%d",&t[i]);
memset(dp,,sizeof(dp));
int mx=;
for(int i=;i<=n;i++)
{
mx=;
int tx=,ty=;
for(int j=;j<=m;j++)
{
dp[i][j] = dp[i-][j];
path[i][j].x=i-;
path[i][j].y=j;
if( s[i]>t[j] && mx<dp[i-][j])
{
mx=dp[i-][j];
tx=i-;//修改最长匹配的下标
ty=j;//修改最长匹配的下标
}
if( s[i] == t[j] )
{
dp[i][j]=mx+;
path[i][j].x=tx;//记录前一个匹配的下标
path[i][j].y=ty;//记录前一个匹配的下标
}
}
}
mx=-;
int id;
for(int i=;i<=m;i++)
if(dp[n][i]>mx)
{
mx=dp[n][i];
id=i;
}
int save[N];
int cnt=;
int tx,ty;
tx=n; ty=id;
while( dp[tx][ty] != )
{
int tmpx,tmpy;
tmpx=path[tx][ty].x;
tmpy=path[tx][ty].y;
if(dp[tx][ty]!=dp[tmpx][tmpy])
{
save[cnt++]=t[ty];
}
tx=tmpx; ty=tmpy;
}
printf("%d\n",mx);
for(int i=cnt-;i>=;i--)
printf("%d ",save[i]);
printf("\n");
}
}
return ;
}

zoj2432的更多相关文章

  1. zoj2432 hdoj1423 最长公共上升子序列(LCIS)

    zoj2431  http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2432 hdoj 1423 http://acm.hdu. ...

  2. hdu1423LCIS zoj2432 必须掌握!

    LCIS就是最长上升公共子序列,要结合LIS和LCS来求 LIS:f[j]=max(f[i])+1; LCS:f[i,j]=max(f[i-1,j],f[i,j-1]或f[i-1,j-1]+1 那么对 ...

  3. OJ题目分类

    POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006 POJ1008 POJ1013 P ...

随机推荐

  1. .net mvc 下实现移动架构display mode

    最近要求做支持移动端网站 我们的设计已经把移动端UI给我了,但是我还没想好改用哪种方式支持移动端 1.常见的就是2级域名m.baidu.com,框架根据访问者设备,来选择是否跳转到移动站 2.同域名的 ...

  2. 解决在SharePoint 2010/2013部署自己的Event Handler后,抛出”不能载入被引用的第三方的程序集&quot;的问题

    今天在处理客户的一个问题的时候.我们已经把我们SharePoint EventHandler依赖的第三方的TIBCO.EMS.dll注冊到GAC里面了,可是日志里面还是抛出了不能载入被引用的第三方的程 ...

  3. cobbler default system 网络安装时主机的menu上只有一个local选项

    问题:使用cobbler default system 做pxe网络安装时,主机启动后安装menu上只有一个local选项,看不到对应的system名字 解决:cobbler default syst ...

  4. db2 设置表 not null

    db2将原表列notnull属性修改为null属性的方法   今天把自己遇到的一个小问题跟大家分享一下如何修改db2数据库表中列的属性--将列的非空属性改为允许空的属性,修改数据表的某一列属性其实很简 ...

  5. 一个事半功倍的c#方法 动态注册按钮事件

    前几天在网上看见一个制作计算器的c#程序,其中有一个动态注册按钮事件,觉的很有用.于是实际操作了一哈, 确实比较好. 言归正传,下面就来讲讲怎样动态注册按钮事件. 首先,我们需要设置变量来获取点击一个 ...

  6. 鼠标滑入滑出,输入框获得失去焦点后触发事件的N种方法之一二

    熟悉position的用法 <!doctype html><html lang="en"> <head> <meta charset=&q ...

  7. Sublime Text 3 插件建议

  8. acdream1415(dij+优先队列+桥)

    这题好坑,卡SPFA... 无奈只能用dij+优先队列了. 因为好久没有写过代码了,所以今天写dij时候突然觉得复杂度不对,dij+优先队列的复杂度是(n+m)logn,这种复杂度对于稠密图是非常慢! ...

  9. Vue入门之旅:一报错 Unknown ... make sure to provide the "name" option及error compiling template

    报错一: Unknown custom element: <custom-select> - did you register the component correctly? For r ...

  10. Vulkan Tutorial 06 逻辑设备与队列

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Introduction 在选择要使用的物理设备之后,我们需要设置一个逻辑设备用于交 ...