hdu 1423(LCS+LIS)
题目链接: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)相关推荐
- HDU - 3564 Another LIS(LIS+线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=3564 题意 给出1~n的插入顺序,要求每次插入之后的LIS 分析 首先用线段树还原出最终序列.因为插入的顺序是按 ...
- 最长子序列(LCS, LIS, LCIS)
(一)最长公共子序列(LCS): 我们用Xi代表{x1, x2, .. , xi}, 用Yj代表{y1, y2, .. , yj}.那么,求长度分别为n,m的两个序列X, Y的LCS,就相当于求Xm与 ...
- LCS/LIS/LCIS
LCS 这里仅仅记录一下LCS算法的思路:典型的DP,空间换时间 step 1: 先比较两个子串的对应位是否相同,如果相同,则b[i][j]='\',并且c[i][j]=c[i-1][j-1]+1,否 ...
- P1439 【模板】最长公共子序列(LCS+LIS)
文章目录 Part1:题目链接 Part2:题目 Part3:思路 关键1:关于这两个序列,它们是不同顺序的同数据序列. 关键2:序列2和序列1的LCS长度,就是在序列2严格遵守序列1的排序规则下所能 ...
- hdu 1080(LCS变形)
解题思路:这道题最开始看错题了,以为只能给长度小的那个字符串添加'-',就往"编辑距离"这个模型去想.其实这里是两个串都可以添加'-',所以模型一下子就简化了.这里可以用LCS的思 ...
- HDU 3564 Another LIS
题意: 有一个起初是空的序列.我们开始在序列中添加从1到N的数字,每次我们只在特定位置向序列添加一个数字.现在,我们想知道每次添加后LIS(最长上升子序列)的长度. 题解: 一个神奇的LIS题,题解见 ...
- 浅谈LCS LIS
\(LIS\)(最长上升子序列) 求长度 \(dp\) - \(O(n ^ 2)\) 动态规划的做法 令\(f[i]\)表示以第\(i\)个元素结尾的\(LIS\)长度 则有: \(f[i] = ma ...
- hdu 1423 最长公共递增子序列
这题一开始把我给坑了,我还没知道LCIS的算法,然后就慢慢搞吧,幸运的是还真写出来了,只不过麻烦了一点. 我是将该题转换为多条线段相交,然后找出最多多少条不相交,并且其数值死递增的. 代码如下: #i ...
- LCS LIS LICS
文章目录 动态规划(DP) [★300. 最长递增子序列](https://leetcode-cn.com/problems/longest-increasing-subsequence/) [196 ...
- vijos1264 lcs+ lis
题意 求两个串的最长上升公共子序列 思路:if(a[i] == b[j]) dp[j] = maxx + 1.; 其中maxx为 b[j] < a[i] maxx = max(maxx, dp[ ...
最新文章
- Android真机运行错误INSTALL_FAILED_MEDIA_UNAVAILABLE
- vs2015编译tensorflow v1.5
- 备忘之--apache下为站点添加错误页面
- 超级实用的列表提示错误一览显示框
- Transformer升级之路:Sinusoidal位置编码追根溯源
- java jbutton文字_java JButton 改变按钮文字
- 动态数据源切换--AbstractRoutingDataSource
- 零基础带你学习MySQL—字符串相关的函数(十三)
- github上下载别人的vue项目,本地运行
- IDEA+SpringBoot+Dubbo在webapp下创建前端页面
- editor.md七牛云上传图片springboot_spring boot 若依系统整合Ueditor,部署时候上传图片错误解决...
- Swift来了,是不是能够入手IOS开发了?
- 计算机中间层怎么解决,电脑中间层服务器地址怎么看
- Qt中图片调用(2)
- 联想服务器一直在初始化系统,为什么联想“一键恢复”一直在初始化
- https证书安装部署 https证书怎么安装
- 爬虫-招聘系列2----boss某直聘
- c语言编程能力风暴,学编程得从娃娃抓起:Abilix 能力风暴 发布 全新教育机器人伯牙...
- 调用阿里云短信服务接口实现短信验证码
- win10的wsapp把电脑卡死
热门文章
- linux文件权限中 chmod、u+x、u、r、w、x分别代表什么
- L2-018 多项式A除以B (25分)
- 手机等第三方终端访问 WebStorm 页面
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_03-项目概述-技术架构...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_6-2.申请微信支付介绍和不同场景的支付方式...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-1.数据信息安全--微信授权一键登录功能介绍...
- 读书笔记 计算机系统--系统架构与操作系统的高度集成 第二章处理器体系结构...
- 爬虫 requests模块的其他用法 抽屉网线程池回调爬取+保存实例,gihub登陆实例
- 【共读Primer】8.[2.1] 基本内置类型(2) Page32
- POJ 1236 Network of Schools (校园网)