最长上升子序列(lis)
问题描述
给出一个数列 {
An} { A n } ,找出其中最长上升子序列的长度。上升子序列中前一
个数严格小于后一个数。
数据范围
20% 20 % 数据满足 n≤1000 n ≤ 1000 。
50% 50 % 数据满足 Ai≤100000 A i ≤ 100000
100% 100 % 数据满足 n≤100000 n ≤ 100000 , Ai≤109 A i ≤ 10 9
解题法
解法多种多样。
树状数组、线段树、平衡树维护或者二分单调栈。
代码
#include<bits/stdc++.h>
#define FN "lis"
const int maxn=1e5+5;
int a[maxn];
int minn[maxn];
int main() {
freopen(FN".in",&