LCIS
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 440 Accepted Submission(s): 201
Problem Description
a1,a2,...,an and b1,b2,...,bm. He wants find a longest common subsequence that consists of consecutive values in increasing order.
Input
T, indicating the number of test cases. For each test case:
The first line contains two integers
n and
m
(1≤n,m≤100000) -- the length of two sequences. The second line contains
n integers:
a1,a2,...,an
(1≤ai≤106). The third line contains
n integers:
b1,b2,...,bm
(1≤bi≤106).
There are at most
1000 test cases and the sum of
n and
m does not exceed
2×106.
Output
For each test case, output the length of longest common subsequence that consists of consecutive values in increasing order.
Sample Input
Sample Output
题意:给定两个序列,求它们的最长公共递增子序列的长度, 并且这个子序列的值是连续的。
分析:我们可以先处理a,b的每个数的最长连续长度,最终取两者最小值的最大值,状态转移方程:dp[a[i]] = max(dp[a[i]], dp[a[i]-1] + 1);
AC代码: