题目:https://www.patest.cn/contests/gplt/L2-014
卧槽,垃圾题真伤啊,看错题浪费4个小时。按题意a[0]才是8!
用了nlogn的做法求最长上升子序列,也就是最长不上升子序列的最小覆盖度(一开始竟没看出来)
#include <bits/stdc++.h>
using namespace std;
int ans[100005],len=1;
int binary_search(int x){
int left,right,mid;
left=0,right=len;
while(left<right){
mid = left+(right-left)/2;
if(ans[mid]>=x) right=mid;
else left=mid+1;
}
return left;
}
int main(){
int n,x;
cin>>n>>x;
ans[1]=x;
for(int i=2; i<=n; ++i){
cin>>x;
if(x>ans[len])
ans[++len]=x;
else{
int pos=binary_search(x);
//int pos=lower_bound(ans,ans+len,arr[i])-ans;
ans[pos] = x;
}
}
/*for(int i=0;i<=len;i++)
printf("%d ",ans[i]);*/
printf("%d\n",len);
return 0;
}