trang chủ / đề bài / hn_hsg_22_e

Sắp xếp hoán vị

Đề bài

Mô tả

Cho số nguyên dương N và một hoán vị p1,p2,…,pN của các số từ 1 đến N. Mỗi thao tác, ta được chọn một dãy con liên tiếp từ vị trí i đến vị trí j (1≤i≤j≤N) và sắp xếp lại dãy con này thành dãy tăng dần, với chi phí là ⌊j−i+1⌋ (lấy phần nguyên, ví dụ ⌊10,3333⌋=10). Có thể thực hiện bao nhiêu thao tác tùy ý, các dãy con được chọn ở các thao tác khác nhau có thể giao nhau.

Yêu cầu: Tính tổng chi phí nhỏ nhất để sắp xếp dãy hoán vị đã cho thành dãy tăng dần.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên dương N (1≤N≤106).
  • Dòng thứ hai chứa N số nguyên dương p1,p2,…,pN là một hoán vị của các số từ 1 đến N.

Dữ liệu ra

In ra chi phí nhỏ nhất để sắp xếp dãy hoán vị đã cho thành dãy tăng dần (in 0 nếu dãy đã tăng dần).

Ràng buộc

  • 1≤N≤106.
  • Có 30% số test ứng với 30% số điểm của bài thỏa mãn N≤9.
  • 30% số test tiếp theo ứng với 30% số điểm của bài thỏa mãn N≤2000.
  • 30% số test tiếp theo ứng với 30% số điểm của bài thỏa mãn N≤105.
  • 10% số test còn lại ứng với 10% số điểm của bài thỏa mãn N≤106.

Ví dụ

Input Output Giải thích
5
3 1 4 2 5
2 Chọn dãy con [3,1] mất chi phí 1 và chuyển thành dãy [1,3,4,2,5], sau đó chọn dãy con [3,4,2] với chi phí 1 để sắp xếp thành dãy [1,2,3,4,5] với tổng chi phí là 2.
8
2 1 4 3 6 5 8 7
2 Ví dụ do bộ chuyển đổi thêm vào. Sắp xếp riêng từng cặp tốn 4, nhưng sắp xếp cả dãy (độ dài 8) chỉ tốn ⌊8⌋=2.
8
2 1 3 5 4 6 8 7
2 Ví dụ do bộ chuyển đổi thêm vào. Sắp xếp cả dãy tốn 2, rẻ hơn sắp xếp riêng ba cặp [2,1], [5,4], [8,7] (tốn 3), dù dãy con được chọn chứa cả các phần tử đã đúng chỗ.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0