# include <iostream>
# include <stdio.h>
# include <string.h>
# include <algorithm>
using namespace std;
int ans[100005],len=1;
int main()
{
freopen("in.txt","r",stdin);
int n,x;
cin>>n>>x;
ans[1]=x;
for(int i=2; i<=n; ++i){
cin>>x;
if(x>=ans[len]) // 如果严格上升,去掉等于号
{
//记录长度为len的不增序列的 最后一个 元素
//且这个元素是所以长度为len的不增序列中的最后一个元素 的最小值
ans[++len]=x;
}
else
{
int pos = lower_bound(ans+1,ans+len,x)-ans;//如lower为大于等于; 果严格,改为upper
ans[pos] = x;//更新最小元素
}
}
printf("%d\n",len);
return 0;
}
LIS 的nlogn的优化
最新推荐文章于 2024-01-17 21:35:00 发布