王琼老师 @ 2023-08-27 14:21:39
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void Output(vector<int> &a)
{
for(int i=0; i<a.size(); i++)
cout<<a[i]<<" ";
cout<<endl;
}
int GetLis(vector<int> &a)
{
vector<int> len(a.size(), 1);
for(int i=1; i<a.size(); i++)
for(int j=0; j<i; j++)
{
if(a[j]<a[i])
continue;
if(len[j]+1>len[i])
len[i]=len[j]+1;
}
// Output(len);
vector<int>::iterator it=max_element(len.begin(), len.end());
return *it;
}
int main()
{
// freopen("1.txt", "r", stdin);
int n; cin>>n;
vector<int> a(n);
for(int i=0; i<n; i++)
cin>>a[i];
cout<<GetLis(a)<<endl;
return 0;
}
by 2020kanade @ 2023-08-27 14:23:36
@王琼老师 把某一个序列按照下标与值的关系哈希一下,映射到另一个序列上,然后做LIS。
by huhexuan @ 2023-10-15 12:30:19
用二分去查。