3739 - 最长上升子列
Description
一个数列的最长上升子列,是指其所有递增的子列中最长的一个子列。

给定一个长度为 n 的数列 an,求这个数列的最长上升子列的长度。

例如对数列 1 7 2 8 3 4,这个数列的最长递增子数列是 1 2 3 4,长度为 4;次长的长度为 3,包括 1 7 8、1 2 3 等。
Input
第一行一个正整数 n,表示数列元素个数,n <= 1000。

第二行 n 个正整数,从左到右给出数列的每一项。
Output
一行一个正整数,表示最长上升子数列的长度。
Examples

Input

8
5 1 6 8 2 4 5 10

Output

5
Hint
设 dp[i] 表示以 a[i] 结尾的最长上升子序列的长度,则

dp[i] = 1 + max{ dp[j] : j < i 且 a[j] < a[i] }

答案为所有 dp[i] 的最大值。状态数 O(n),每次转移 O(n),总复杂度 O(n^2),可以通过本题。
Source
51nod 2080
Tags
题目参数
时间限制 1 秒
内存限制 128 MB
提交次数 1
通过次数 1