版权声明:本文为博主原创文章,未经博主同意不得转载。

https://blog.csdn.net/qq574857122/article/details/34430283

题目链接:点击打开链接

题意:

给定n长的一个序列

再给定k长的一个序列

求LCIS并输出这个子序列

如有多解输出随意解。。

= - = 敲的时候听着小曲儿pre的含义还没有想清楚。万万没想到就过了。。

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<set>
#include<vector>
#include<map>
#include<math.h>
#include<string>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define N 505
int a[N],s[N];
int n, k;
int dp[N][N];
int pre[N][N][2];
int is[N][N];
vector<int>G;
int main(){
int i,j,co;
while(~scanf("%d",&n)){
G.clear();
for(i=1;i<=n;i++)scanf("%d",&a[i]);
scanf("%d",&k);
for(i=1;i<=k;i++)scanf("%d",&s[i]);
memset(dp, 0, sizeof dp);
memset(pre, 0, sizeof pre);
memset(is, 0, sizeof is);
for(i=1;i<=n;i++) {
int maxx = 0;
int x = 0, y = 0;
for(j=1;j<=k;j++)
{
dp[i][j] = dp[i-1][j];
if(a[i]>s[j] && maxx < dp[i-1][j]) {
maxx = dp[i-1][j];
if(is[i-1][j])
x = i-1, y = j;
else {
x = pre[i-1][j][0];
y = pre[i-1][j][1];
}
}
if(a[i]==s[j]) {
is[i][j] = 1;
dp[i][j] = maxx + 1;
if(is[x][y])
pre[i][j][0] = x, pre[i][j][1] = y;
else {
pre[i][j][0] = pre[x][y][0];
pre[i][j][1] = pre[x][y][1];
}
continue;
}
if(is[i-1][j])
pre[i][j][0] = i-1, pre[i][j][1] = j;
else {
pre[i][j][0] = pre[i-1][j][0];
pre[i][j][1] = pre[i-1][j][1];
}
}
}
int ans = 0;
int x = n, y = k;
for(i=1;i<=k;i++)if(ans<dp[n][i]){
ans = dp[n][i];
x = n, y = i;
}
printf("%d\n",ans);
if(!ans)continue;
while(x+y) {
if(is[x][y])G.push_back(a[x]);
int x1 = pre[x][y][0];
int y1 = pre[x][y][1];
x = x1 , y = y1;
}
for(i=G.size()-1; i>=0; i--){
printf("%d",G[i]);
i? printf(" "):puts("");
}
}
return 0;
}
/*
2
1 2
3
1 2 3 */

Codeforces 10D LCIS 求最长公共上升子序列及输出这个子序列 dp的更多相关文章

  1. 后缀数组(模板题) - 求最长公共子串 - poj 2774 Long Long Message

    Language: Default Long Long Message Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 21 ...

  2. [algorithm]求最长公共子序列问题

    最直白方法:时间复杂度是O(n3), 空间复杂度是常数 reference:http://blog.csdn.net/monkeyandy/article/details/7957263 /** ** ...

  3. poj 2774 Long Long Message,后缀数组,求最长公共子串 hdu1403

    题意:给出两个字符串,求最长公共子串的长度. 题解:首先将两个字符串连在一起,并在中间加一个特殊字符(字串中不存在的)切割,然后两个串的最长公共字串就变成了全部后缀的最长公共前缀.这时就要用到heig ...

  4. POJ 2774 Long Long Message (二分 + Hash 求最长公共子串)题解

    题意:求最长公共子串 思路:把两个串Hash,然后我们把短的作为LCS的最大可能值,然后二分长度,每次判断这样二分可不可以.判断时,先拿出第一个母串所有len长的子串,排序,然后枚举第二个母串len长 ...

  5. 算法 -- 求最长公共字符串&PHP

    https://blog.csdn.net/hongyuancao/article/details/83308093 本文是利用PHP,求最长公共字符串.思路:利用动态规划和矩阵的思想. 动态规划:就 ...

  6. HDU 4681 string 求最长公共子序列的简单DP+暴力枚举

    先预处理,用求最长公共子序列的DP顺着处理一遍,再逆着处理一遍. 再预处理串a和b中包含串c的子序列,当然,为了使这子序列尽可能短,会以c 串的第一个字符开始 ,c 串的最后一个字符结束 将这些起始位 ...

  7. 文本比较算法Ⅱ——Needleman/Wunsch算法的C++实现【求最长公共子串(不需要连续)】

    算法见:http://www.cnblogs.com/grenet/archive/2010/06/03/1750454.html 求最长公共子串(不需要连续) #include <stdio. ...

  8. 求最长公共子串 Longest Common Subsequence

    最长公共子串 // Longest Common Subsequence 子串有别于子序列, 子串是连续的, 而子序列可以不连续 /*--------------------------------- ...

  9. 计蒜之道 初赛 第三场 题解 Manacher o(n)求最长公共回文串 线段树

    腾讯手机地图 腾讯手机地图的定位功能用到了用户手机的多种信号,这当中有的信号的作用范围近.有的信号作用的范围则远一些.有的信号相对于用户在不同的方位强度是不同的,有的则是在不论什么一个方向上信号强度都 ...

随机推荐

  1. R_Studio中对xls文件学生总成绩统计求和

    我们发现这张xls表格是没有学生总分的,在xls文件中计算学生总分嫌麻烦时,可以考虑在R Studio中自定义R Script脚本来解决实际问题(计算每个学生的总成绩) .xls数据表中的数据(关键信 ...

  2. sqli-labs(46)

    0X01首先我们先来看一下源码 发现查询语句变成了 order by  参数也变成了 sort 看看是什么样的 ()首先看看本关sql语句 $sql = "SELECT * FROM use ...

  3. [CSP-S模拟测试]:爬(贪心)

    题目传送门(内部题134) 输入格式 第一行两个数$N,L$. 接下来$N$行每行两个数$A_i,B_i$. 接下来$N$行每行一个整数$C_i$. 输出格式 一行一个整数表示答案,无解输出$-1$. ...

  4. 【每日一包0012】to-camel-case,to-no-case,to-space-case

    github地址:https://github.com/ABCDdouyaer/a_pack_per_day_NO.1 to-camel-case 将被其他符号分割的字符串转换为驼峰形式的字符串 用法 ...

  5. vs2015使用低版本编译的openssl问题

    用Vs2005编译的openssl,在vs2015中使用就悲剧了,报如下错误 >libeay32.lib(cryptlib.obj) : error LNK2019: 无法解析的外部符号 __v ...

  6. vuefor循环

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. 代码实现:输入3个数a,b,c,按大小顺序输出。

    import java.util.Arrays; import java.util.Scanner; //输入3个数a,b,c,按大小顺序输出. public class Test34 { publi ...

  8. xcode dyld: Library not loaded: @rpath/libswiftCore.dylib问题解决

    app安装好了之后就报这个错误,这个时候可以将xcode工程clear一下,删除已经安装好的app,再重新安装即可

  9. WPF Prism Request Navigate activation error

    其他测试项目时没有问题,但是有些项目有时候导航一直报错误! Referring the StockTraderRI, I created a popup region in my shell infB ...

  10. 2 Configuring SAP ERP Sales and Distribution -introduction to SAP

    First Steps in SAPWe’ll now discuss some of the basic menus, screens, and transactions that you need ...