题目链接
分析
求最少下降子序列数,等于求最长上升子序列的长度(Dilworth定理)
代码实现
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
set<int> s;
int main()
{
int n, t;
cin >> n;
cin >> t;
s.insert(t);
set<int>::iterator it;
for(int i = 0; i < n - 1; ++i)
{
cin >> t;
if(*s.rbegin() > t)
{
it = lower_bound(s.begin(), s.end(), t);
s.erase(it);
}
s.insert(t);
}
cout << s.size() << endl;
}