法一:(23分)
数组。有一个测试点会超时,每次第二层遍历是O(n)。
#include <bits/stdc++.h>
using namespace std;
int a[100010];
int main(){
int n,t,count=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>t;
bool flag=false;
for(int i=0;i<count;i++){
if(a[i]>t){
a[i]=t;
flag=true;
break;
}
}
if(!flag){
a[count]=t;
count++;
}
}
cout<<count<<endl;
return 0;
}
法二:(25分)stl相当于是遍历上节省了时间,lower_bound底层二分
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,t,count=0;
cin>>n;
set<int> st;
set<int>::iterator it;
for(int i=0;i<n;i++){
cin>>t;
if(st.empty()){
st.insert(t);
}else{
it=st.lower_bound(t);
if(it!=st.end()){
st.erase(it);
st.insert(t);
}else{
st.insert(t);
}
}
}
cout<<st.size()<<endl;
return 0;
}
标签:count,insert,set,int,调度,st,flag,L2,014
From: https://www.cnblogs.com/chengyiyuki/p/18076212