poj2127——LCIS】的更多相关文章

题目传送门(洛谷)(CF)(POJ) 前言 期末考试前的最后一篇题解,希望期末考  rp++ 奇怪,为什么在CF上能过的代码到POJ上就 听取WA声一片  (不管了) 题目思路 LCIS模版O(n²)+方案记录(递归输出) LCIS 基础方法 简单易想的方法:直接将LCS和LIS简单相加,复杂度O(n³) for (int i = 1; i <= l1; i++) for (int j = 1; j <= l2; j++) if (a[i] == b[j]) { for (int k = 0;…
题目:http://poj.org/problem?id=2127 LCIS,注意存储路径的方法. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #define ll long long using namespace std; ll n,a[],m,b[],f[][],mx,pre[][],ans,y,st,print[]; //void print(ll sx,ll sy)//{// if(f…
POJ2127 给定两个 整数序列,求LCIS(最长公共上升子序列) dp[i][j]表示A的A[1.....i]与B[1.....j]的以B[j]为结尾的LCIS. 转移方程很简单 当A[i]!=B[j] dp[i][j]=dp[i-1][j] else dp[i][j]=max(dp[i][k]+1) k<j A[i]>B[k] 朴素实现O(n^3) 通过标记最大值的方法可以优化到O(n^2) 代码很简单 #include<stdio.h> #include<stdlib…
LCIS  Accepts: 109  Submissions: 775  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: 65536/65536 K (Java/Others) 问题描述 Alex有两个序列a1a2...ana​1​​,a​2​​,...,a​n​​和b1b2...bmb​1​​,b​2​​,...,b​m​​. 他想找到它们的最长公共递增子序列, 并且这个子序列的值是连续的(xx1...y1yx,x+1,...,y−…
描述 身为拜月教的高级间谍,你的任务总是逼迫你出生入死.比如这一次,拜月教主就派你跟踪赵灵儿一行,潜入试炼窟底. 据说试炼窟底藏着五行法术的最高法术:风神,雷神,雪妖,火神,山神的咒语.为了习得这些法术,要付出艰辛的努力,但是回报同样十分丰厚. 拜月希望你告诉他咒语的长度为多少.(你:“请问您想知道咒语的具体内容吗?”拜月:“想,但是vijos不支持special judge.”-_-原来大人物也有大人物的悲哀...)于是你偷偷躲在一边,想乘机看看咒语究竟是什么.突然,天空(??试炼窟底看的到天…
最长公共上升子序列慕名而知是两个字符串a,b的最长公共递增序列,不一定非得是连续的.刚开始看到的时候想的是先用求最长公共子序列,然后再从其中找到最长递增子序列,可是仔细想一想觉得这样有点不妥,然后从网上看了一些大神的理解,觉得恍然大悟. 定义dp[i][j]表示字符串a前i个和字符串b的前j个且以b[j]结尾构成的最长公共上升子序列的长度,定义一个max用来保存最大的长度.用两个循环,外层循环控制字符串a,内层循环控制字符串b.如果a[i]不等于b[j],则dp[i][j]=dp[i-1][j]…
题目链接: LCIS Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 458    Accepted Submission(s): 212 Problem Description Alex has two sequences a1,a2,...,an and b1,b2,...,bm. He wants find a longest co…
题目传送门 题意:中文题面 分析:LCIS应用:设置b[]为a[]的反转,然后LCIS,若相等的是自己本身,则+1, 否则+2 代码: #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> using namespace std; const int MAXN = 2e2 + 10; const int INF = 0x3f3f3f3f; int a[MAX…
题目传送门 题意:LCIS(Longest Common Increasing Subsequence) 最长公共上升子序列 分析:a[i] != b[j]: dp[i][j] = dp[i-1][j]; a[i]==b[j]:  dp[j]=max(dp[j],dp[k]); (1<=k<j&&b[k]<b[j]) 打印路径时按照b[i]来输出 收获:理解不是很深入,推荐资料: 最长公共上升子序列(LCIS)的O(n^2)算法 最长公共上升子序列的另一个O(mn)的算法…
PS:本篇博文均采用宏#define FOR(i, a, n) for(i = a; i <= n; ++i) LIS:最长上升子序列 废话不多说:http://baike.baidu.com/link?url=bRXFb18sGwPcKpplIIIq40hnngEUJe6S4b1PLgVnaby8zaahrO2NhI2tfoQZmw54#2_1 http://www.nocow.cn/index.php/%E6%9C%80%E9%95%BF%E4%B8%8D%E4%B8%8B%E9%99%8D…