最长上升子序列LIS O(n*log(n))

恩恩,一直写的是n^2的DP,才知道原来可以做到n*log(n),而且写起来意外的简单。
记下来。

#include<bits/stdc++.h>
using namespace std;
signed main(void) {
    int n;
    cin >> n;
    int a[n + 5];
    memset(a, 0x3f, sizeof(a));
    for (int i = 0, x; i < n; i++) {
        cin >> x;
        *lower_bound(a, a + n, x) = x;
    }
    cout << lower_bound(a, a + n, 0x3f3f3f3f) - a;
    return 0;
}

你可能感兴趣的:(最长上升子序列LIS O(n*log(n)))