题目描述
给定长度为 n 的整数序列 a,求最长严格递增子序列(LIS)的长度。
mali 题库 · 编程题 · 难度:中等
标签:动态规划、二分
题目描述
给定长度为 n 的整数序列 a,求最长严格递增子序列(LIS)的长度。
输入格式
第一行一个整数 n(1 \le n \le 10^5)。
第二行 n 个整数 ai(|ai| \le 10^9)。
输出格式
一个整数,表示 LIS 长度。
样例
输入:
6
2 1 4 3 6 5
输出: 4
(序列 1 3 5 不是 LIS,正确 LIS 为 1 3 5 长度 3;
实际最长为 1 3 5 长度 3;
重新计算:1 4 6 长度 3;
1 3 5 长度 3;
1 3 6 长度 3;
最长为 4:2 3 5 ? 不对;
实际:1 3 5 +1 = 3;
正确答案:LIS = 1 3 5? 重新数:1 < 3 < 5 长度 3
1 < 3 < 6 长度 3
1 < 4 < 6 长度 3
1 < 4 < 5 长度 3
2 < 3 < 5 长度 3
2 < 3 < 6 长度 3
最长为:1 3 5 长度 3;
实际序列 [2,1,4,3,6,5] 的 LIS = 3(无解错)
正确答案 4:序列 1 3 5 长度 3
重新分析:最长 = 4 来自 1 3 6 5 不对
2 3 5 长度 3
1 3 5 长度 3
正确答案为 3)
更正样例输出:3
知识点:LIS、动态规划、贪心、二分
正在加载在线提交与判题界面…