普通的dp写法
f[i] = max{ f[j] +1 } j<i &&a[i]<=a[j] 复杂度 O(n^2)
单调队列写法 O(nlogn)
int n,a[N],f[N],st[N],len;
int cmp(int x,int y){
return x>y;
}
void solve(){
int i;
len=1; st[1]=a[1];
for(i=2;i<=n;i++){
if(a[i]<=st[len]) st[++len]=a[i];
else{
int t=upper_bound(st+1,st+1+len,a[i],cmp)-st;
f[i]=t;
st[t]=a[i];
}
}
cout<<len;
}