Hoán vị (Contest Practice VNOI 2021 Round 2)

Xem PDF




Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Prolog, Pypy, Pypy 3, Ruby, Rust, Scala, Swift
Điểm: 2300 Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Cho một hoán vị \(h_{1}, h_{2}, \ldots, h_{n}\) là một hoán vị của \(1, 2, \ldots, n\), bạn được thực hiện hai loại phép biến đổi sau:

  • Chọn hai phần tử bất kì và tráo đổi, loại phép biến đổi này chỉ được thực hiện nhiều nhất một lần.
  • Chọn hai phần tử kề nhau và tráo đổi, loại phép biến đổi này được thực hiện nhiều lần.

Yêu cầu: Tính số phép biến đổi ít nhất để đưa hoán vị \(h_{1}, h_{2}, \ldots, h_{n}\) thành hoán vị \(1, 2, \ldots, n\).

Input

  • Dòng đầu chứa số nguyên \(n\) \((1 \leq n \leq 10^{5})\);
  • Dòng thứ hai chứa \(n\) số nguyên \(h_{1}, h_{2}, \ldots, h_{n}\) là một hoán vị của \(1, 2, \ldots, n\).

Output

  • In ra một số nguyên là số phép biến đổi ít nhất để đưa hoán vị \(h_{1}, h_{2}, \ldots, h_{n}\) thành hoán vị \(1, 2, \ldots, n\).

Scoring

  • Subtask \(1\) (\(10\%\) số điểm): \(n = 3\).
  • Subtask \(2\) (\(20\%\) số điểm): \(n \leq 30\).
  • Subtask \(3\) (\(20\%\) số điểm): \(n \leq 300\).
  • Subtask \(4\) (\(20\%\) số điểm): \(n \leq 10000\).
  • Subtask \(5\) (\(15\%\) số điểm): \(n \leq 10^{4}\).
  • Subtask \(6\) (\(15\%\) số điểm): không có rằng buộc gì thêm.

Example

Test 1

Input
5
5 3 4 2 1
Output
3

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.