
替换其实是为后面的元素让出更多的空间,如果有更小的元素,才能插入,如果没有,则对最终结果也没有影响
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include <cstdio> #include <algorithm>
using namespace std;
const int MAXN = 100005;
int x, f[MAXN], n, ans = 1;
int main() { scanf("%d", &n); for(int i = 1; i <= n; i ++) { scanf("%d", &x); f[i] = x; if(x > f[ans]) { f[++ans] = x; } else { int ind = lower_bound(f + 1, f + 1 + ans, x) - f; f[ind] = x; } } printf("%d", ans); return 0; }
|