最长上升子序列
Posted btjzoi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长上升子序列相关的知识,希望对你有一定的参考价值。
请自行浏览luogu题目——T15004(团队题目)最长上升子序列
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<queue> using namespace std; inline int read() { char c=getchar();int re=0,f=1; while(‘0‘>c||c>‘9‘) { if(c==‘-‘) { f=-1; } c=getchar(); } while(‘0‘<=c&&c<=‘9‘) { re=re*10+c-‘0‘; c=getchar(); } return re*f; } int n,cnt=1; int a[100005],d[100005]; int main() { n=read(); //cout<<n; for(int i=1;i<=n;i++) { a[i]=read(); } d[1]=a[1]; for(int i=2;i<n;i++) { if(d[cnt]<a[i]) { d[++cnt]=a[i]; } else { int p=lower_bound(d+1,d+cnt+1,a[i])-d; d[p]=a[i]; } } printf("%d",cnt); return 0; }
代码如上,用lower_bound求的最长上升子序列的时间复杂度是nlogn
在题目数据范围很大的情况下n方算法是不可以接受的!
例题:P1020导弹拦截
——2021届董驰原
以上是关于最长上升子序列的主要内容,如果未能解决你的问题,请参考以下文章