题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1423

好坑啊。。还有公共串为0时的特殊判断,还有格式错误。。看Discuss看知道除了最后一组测试数据之外都需要空行。。

其余的会LCS打印路径就行了。

法一:

///公共最长上升子序列
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#define N 505
using namespace std;int dp[N][N],flag[N][N];
int dp1[N];
int a[N],b[N],c[N];
int n,m,k;void solve_c(int i,int j){if(i==0||j==0) return;if(flag[i][j]==0){solve_c(i-1,j-1);c[++k] = a[i];}else if(flag[i][j]==1){solve_c(i-1,j);}else solve_c(i,j-1);
}
void LCS(){memset(flag,0,sizeof(flag));for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i]==b[j]){dp[i][j] = dp[i-1][j-1]+1;flag[i][j]=0;}else{if(dp[i-1][j]>dp[i][j-1]) flag[i][j]=1;else flag[i][j]=-1;dp[i][j] = max(dp[i-1][j],dp[i][j-1]);}}}//printf("%d",dp[n][m]);k = 0;solve_c(n,m);//for(int i=1;i<=k;i++) printf("%d ",c[i]);
}
void LIS(){dp1[1] = 1;int mx = 1;for(int i=2;i<=k;i++){dp1[i]=1;for(int j=1;j<i;j++){if(c[i]>c[j]&&dp1[i]<dp1[j]+1){dp1[i] = dp1[j]+1;}if(mx<dp1[i]) mx=dp1[i];}}if(k==0) mx = 0;printf("%d\n",mx);
}
int main()
{int tcase;scanf("%d",&tcase);while(tcase--){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}scanf("%d",&m);for(int i=1;i<=m;i++){scanf("%d",&b[i]);}memset(dp,0,sizeof(dp));LCS();LIS();if(tcase) printf("\n");}return 0;
}

大神模板:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int maxn = 605;
int a[maxn],b[maxn],dp[maxn];
int n,m;
int LICS()
{int i,j,MAX;memset(dp,0,sizeof(dp));for(i = 1; i<=n; i++){MAX = 0;for(j = 1; j<=m; j++){if(a[i]>b[j] && MAX<dp[j])MAX = dp[j];if(a[i]==b[j])dp[j] = MAX+1;}}MAX = 0;for(i = 1; i<=m; i++)if(MAX<dp[i])MAX = dp[i];return MAX;
}
int main()
{int tcase;scanf("%d",&tcase);while(tcase--){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}scanf("%d",&m);for(int i=1;i<=m;i++){scanf("%d",&b[i]);}int MAX = LICS();printf("%d\n",MAX);if(tcase) printf("\n");}return 0;
}

转载于:https://www.cnblogs.com/liyinggang/p/5414884.html

hdu 1423(LCS+LIS)相关推荐

  1. HDU - 3564 Another LIS(LIS+线段树)

    http://acm.hdu.edu.cn/showproblem.php?pid=3564 题意 给出1~n的插入顺序,要求每次插入之后的LIS 分析 首先用线段树还原出最终序列.因为插入的顺序是按 ...

  2. 最长子序列(LCS, LIS, LCIS)

    (一)最长公共子序列(LCS): 我们用Xi代表{x1, x2, .. , xi}, 用Yj代表{y1, y2, .. , yj}.那么,求长度分别为n,m的两个序列X, Y的LCS,就相当于求Xm与 ...

  3. LCS/LIS/LCIS

    LCS 这里仅仅记录一下LCS算法的思路:典型的DP,空间换时间 step 1: 先比较两个子串的对应位是否相同,如果相同,则b[i][j]='\',并且c[i][j]=c[i-1][j-1]+1,否 ...

  4. P1439 【模板】最长公共子序列(LCS+LIS)

    文章目录 Part1:题目链接 Part2:题目 Part3:思路 关键1:关于这两个序列,它们是不同顺序的同数据序列. 关键2:序列2和序列1的LCS长度,就是在序列2严格遵守序列1的排序规则下所能 ...

  5. hdu 1080(LCS变形)

    解题思路:这道题最开始看错题了,以为只能给长度小的那个字符串添加'-',就往"编辑距离"这个模型去想.其实这里是两个串都可以添加'-',所以模型一下子就简化了.这里可以用LCS的思 ...

  6. HDU 3564 Another LIS

    题意: 有一个起初是空的序列.我们开始在序列中添加从1到N的数字,每次我们只在特定位置向序列添加一个数字.现在,我们想知道每次添加后LIS(最长上升子序列)的长度. 题解: 一个神奇的LIS题,题解见 ...

  7. 浅谈LCS LIS

    \(LIS\)(最长上升子序列) 求长度 \(dp\) - \(O(n ^ 2)\) 动态规划的做法 令\(f[i]\)表示以第\(i\)个元素结尾的\(LIS\)长度 则有: \(f[i] = ma ...

  8. hdu 1423 最长公共递增子序列

    这题一开始把我给坑了,我还没知道LCIS的算法,然后就慢慢搞吧,幸运的是还真写出来了,只不过麻烦了一点. 我是将该题转换为多条线段相交,然后找出最多多少条不相交,并且其数值死递增的. 代码如下: #i ...

  9. LCS LIS LICS

    文章目录 动态规划(DP) [★300. 最长递增子序列](https://leetcode-cn.com/problems/longest-increasing-subsequence/) [196 ...

  10. vijos1264 lcs+ lis

    题意 求两个串的最长上升公共子序列 思路:if(a[i] == b[j]) dp[j] = maxx + 1.; 其中maxx为 b[j] < a[i] maxx = max(maxx, dp[ ...

最新文章

  1. Android真机运行错误INSTALL_FAILED_MEDIA_UNAVAILABLE
  2. vs2015编译tensorflow v1.5
  3. 备忘之--apache下为站点添加错误页面
  4. 超级实用的列表提示错误一览显示框
  5. Transformer升级之路:Sinusoidal位置编码追根溯源
  6. java jbutton文字_java JButton 改变按钮文字
  7. 动态数据源切换--AbstractRoutingDataSource
  8. 零基础带你学习MySQL—字符串相关的函数(十三)
  9. github上下载别人的vue项目,本地运行
  10. IDEA+SpringBoot+Dubbo在webapp下创建前端页面
  11. editor.md七牛云上传图片springboot_spring boot 若依系统整合Ueditor,部署时候上传图片错误解决...
  12. Swift来了,是不是能够入手IOS开发了?
  13. 计算机中间层怎么解决,电脑中间层服务器地址怎么看
  14. Qt中图片调用(2)
  15. 联想服务器一直在初始化系统,为什么联想“一键恢复”一直在初始化
  16. https证书安装部署 https证书怎么安装
  17. 爬虫-招聘系列2----boss某直聘
  18. c语言编程能力风暴,学编程得从娃娃抓起:Abilix 能力风暴 发布 全新教育机器人伯牙...
  19. 调用阿里云短信服务接口实现短信验证码
  20. win10的wsapp把电脑卡死

热门文章

  1. linux文件权限中 chmod、u+x、u、r、w、x分别代表什么
  2. L2-018 多项式A除以B (25分)
  3. 手机等第三方终端访问 WebStorm 页面
  4. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_03-项目概述-技术架构...
  5. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_6-2.申请微信支付介绍和不同场景的支付方式...
  6. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-1.数据信息安全--微信授权一键登录功能介绍...
  7. 读书笔记 计算机系统--系统架构与操作系统的高度集成 第二章处理器体系结构...
  8. 爬虫 requests模块的其他用法 抽屉网线程池回调爬取+保存实例,gihub登陆实例
  9. 【共读Primer】8.[2.1] 基本内置类型(2) Page32
  10. POJ 1236 Network of Schools (校园网)