Trò chơi ô số (C.P.VNOI 2021 LMH R4)

Xem PDF




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

Trò chơi ô số là một trò chơi trí tuệ được giáo sư X phát minh và phổ biến trong trường học. Trò chơi diễn ra trên một bảng chữ nhật 2 hàng, \(n\) cột được chia làm \(2n\) ô vuông. Người ta điền các số nguyên từ \(1\) tới \(n\) vào các ô vuông, mỗi số điền 2 lần theo một trật tự ngẫu nhiên.

Người chơi được phép thực hiện các phép ĐẢO: hoán đổi giá trị hai số ở cùng cột với mục đích làm cho hai hàng của bảng trở thành hai hoán vị của dãy số \((1, 2, ..., n)\) (cấu hình hoàn hảo).

Một người chuyên nghiệp trong trò chơi này (Cell Swapping Professional - CSP) có thể trả lời rất nhanh hai câu hỏi sau đối với một cấu hình ban đầu của trò chơi:

  • Có bao nhiêu cấu hình hoàn hảo khác nhau có thể tạo thành từ cấu hình ban đầu (hai cấu hình hoàn hảo gọi là khác nhau nếu nó có một vị trí ô mang giá trị khác nhau trên hai cấu hình)
  • Số lần thực hiện phép ĐẢO ít nhất là bao nhiêu để thu được một cấu hình hoàn hảo

Bạn có thể không phải người chơi chuyên nghiệp nhưng hoàn toàn có thể giúp máy tính của bạn trở thành máy chơi chuyên nghiệp, hãy thực hiện điều đó.

Input

  • Dòng 1 chứa số nguyên dương \(n \leq 10^5\)
  • Dòng 2 chứa \(n\) số nguyên dương ghi trên hàng 1 của bảng ban đầu
  • Dòng 3 chứa \(n\) số nguyên dương ghi trên hàng 2 của bảng ban đầu
  • Dữ liệu vào được cho đúng đắn, tức là bảng chứa đầy đủ các số từ \(1\) tới \(n\), mỗi số xuất hiện 2 lần.

Output

  • Dòng 1 ghi số cấu hình hoàn hảo có thể tạo thành
  • Trong trường hợp dòng 1 chứa số khác 0, dòng 2 ghi số phép biến đổi ít nhất để đưa bảng về cấu hình hoàn hảo

Example

Test 1

Input
5
3 2 1 2 3
4 5 5 1 4
Output
4
2

Bình luận

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

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