trang chủ / bài tập / bubgraph

Đồ thị sắp xếp nổi bọt

Đề bài

Mô tả

Cho một hoán vị a1,a2,,an của 1,2,,n.

Ta xây dựng một đồ thị vô hướng G gồm n đỉnh (đánh số 1 đến n) và ban đầu không có cạnh nào, bằng cách chạy thuật toán sắp xếp nổi bọt trên dãy a:

lặp lại
    swapped = false
    với i = 1 đến n - 1:
        nếu a[i] > a[i + 1]:
            thêm cạnh vô hướng giữa hai đỉnh a[i] và a[i + 1]
            đổi chỗ a[i] và a[i + 1]
            swapped = true
cho đến khi swapped = false

Một tập độc lập của G là một tập các đỉnh mà không có hai đỉnh nào trong tập được nối bởi một cạnh. Hãy tìm kích thước của tập độc lập lớn nhất của G.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n.
  • Dòng thứ hai chứa n số nguyên đôi một phân biệt a1,a2,,an.

Dữ liệu ra

Một số nguyên duy nhất: kích thước tập độc lập lớn nhất của G.

Ràng buộc

  • 2n105
  • 1ain, các ai đôi một phân biệt.

Ví dụ

Input Output Giải thích
3
3 1 2
2 Thuật toán đổi chỗ 31, thêm cạnh (1,3); dãy thành [1,3,2]. Sau đó đổi chỗ 32, thêm cạnh (2,3); dãy đã sắp xếp. Đồ thị có 3 đỉnh, 2 cạnh, tập độc lập lớn nhất là {1,2}.
5
4 2 1 3 5
3 Các cạnh sinh ra nối mọi cặp bị nghịch thế trong dãy ban đầu: (4,2),(4,1),(4,3),(2,1). Tập độc lập lớn nhất có kích thước 3, ví dụ {2,3,5}.
10
1 9 8 10 2 3 4 6 5 7
6 Một tập độc lập lớn nhất là {1,2,3,4,5,7}.

Bình luận

Không có bình luận tại thời điểm này.

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