标签:mda har namespace 导弹拦截 ++ cstring span return 题目
请自行浏览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届董驰原
标签:mda har namespace 导弹拦截 ++ cstring span return 题目
原文地址:https://www.cnblogs.com/btjzoi/p/11824157.html