Dãy Con Tăng Dài Nhất

Đề bài

Mô tả

Cho mảng gồm n số nguyên. Tìm độ dài dãy con tăng ngặt dài nhất (Longest Increasing Subsequence — LIS). Dãy con thu được bằng cách xóa một số phần tử mà không thay đổi thứ tự, và mỗi phần tử phải lớn hơn phần tử trước đó.

Dữ liệu vào

Dòng đầu tiên chứa số nguyên n: kích thước mảng.

Dòng thứ hai chứa n số nguyên x1,x2,,xn: các phần tử của mảng.

Dữ liệu ra

In ra độ dài dãy con tăng ngặt dài nhất.

Ràng buộc

  • 1n2×105
  • 1xi109

Ví dụ

Input Output Giải thích
10
1 1 1 1 1 1 1 1 1 1
1 Tất cả phần tử bằng nhau, LIS có độ dài 1
10
1 2 3 4 5 6 7 8 9 10
10 Mảng đã tăng ngặt, LIS là toàn bộ mảng

Bình luận

  • dinhngocanbinh1234
    đã bình luận 5 days trước

    include <iostream>

    include <algorithm>

    include <vector>

    using namespace std; int main() { int n; cin >> n; vector <int> a (n); for (int i=0; i<n; i++) cin >> a[i]; vector <int> L(n,1); for (int i=0; i<n; i++){ for (int j=0; j<i; j++){ if (a[j]<a[i]){ L[i] = max(L[i], L[j]+1); } } } cout << *max_element(L.begin(), L.end()) << "\n"; return 0; }

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0