思考
キューの最小端部よりも少ない場合、この問題は非常に最長の上昇シーケンスのように、私が言うことができないので、なぜこの質問を書き、私たちは、そのキューの各終わりと新しい最小値比較の回数ことを、すべてのテイクをキュー増加部分列を構築されていますそれは、キューに入れることができます。
そうする理由は、単に大きなブロック番号の数が少ないの不在で、我々の対象の要件に応じて出力キューをすることができます。
コード
#include <bits/stdc++.h>
using namespace std;
vector<int> dq;
int main()
{
int n,num;
scanf("%d",&n);
for (int i=0;i<n;i++) {
scanf("%d",&num);
vector<int>::iterator it=lower_bound(dq.begin(),dq.end(),num);
if (it==dq.end()) {
dq.push_back(num);
}
else {
int ind=it-dq.begin();
dq[ind]=num;
}
}
printf("%d\n",dq.size());
return 0;
}