算法板子

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N], q[N];
int n;
int main() {
    cin >> n;
    for (int i = 0; i < n; ++i) cin >> a[i];
    int len = 0;
    q[0] = -2e9;
    for (int i = 0; i <n; ++i) {
        int t = a[i];
        int l = 0, r = len, m;
        while (l < r) {
            m = (l + r + 1) >> 1;
            if (q[m] < t) {
                l = m;
            } else {
                r = m - 1;
            }
        }
        q[l + 1] = t;
        len = max(len, l + 1);
    }
    cout << len << endl;
    return 0;
}
本文为原创文章,欢迎分享,勿全文转载,如果内容你实在喜欢,可以加入收藏夹,说不定哪天故事又继续更新了呢。
本文地址:https://qoogle.top/longest-subsequence-with-bianry-seach/
最后修改日期:2020年6月18日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。