7-10列車のスケジュール

思考

キューの最小端部よりも少ない場合、この問題は非常に最長の上昇シーケンスのように、私が言うことができないので、なぜこの質問を書き、私たちは、そのキューの各終わりと新しい最小値比較の回数ことを、すべてのテイクをキュー増加部分列を構築されていますそれは、キューに入れることができます。

そうする理由は、単に大きなブロック番号の数が少ないの不在で、我々の対象の要件に応じて出力キューをすることができます。

コード

#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;
}

おすすめ

転載: www.cnblogs.com/xyqxyq/p/12328834.html