USACO 2014 - Reordering the Cows

Xem PDF



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, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 800 (p) Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

\(N\) cô bò của Farmer John (\(1 \le N \le 100\)), được đánh số thuận tiện từ \(1\) đến \(N\), đang đứng thành một hàng. Thứ tự của chúng được mô tả bởi mảng \(A\), trong đó \(A(i)\) là số hiệu của cô bò ở vị trí \(i\). Farmer John muốn sắp xếp lại chúng theo một thứ tự khác để chụp ảnh tập thể; thứ tự này được mô tả bởi mảng \(B\), trong đó \(B(i)\) là số hiệu của cô bò cần đứng ở vị trí \(i\) sau cùng.

Ví dụ, giả sử ban đầu các cô bò đứng theo thứ tự:

A = 5 1 4 2 3

và Farmer John muốn chúng chuyển thành thứ tự:

B = 2 5 3 1 4

Để chuyển từ thứ tự \(A\) sang thứ tự \(B\), các cô bò thực hiện một số phép dịch chuyển "theo chu trình". Mỗi phép dịch chuyển như vậy bắt đầu khi một cô bò đi đến đúng vị trí của mình trong thứ tự \(B\), đẩy cô bò khác ra khỏi vị trí đó; cô bò bị đẩy lại đi đến đúng vị trí của mình và đẩy một cô bò khác, quá trình tiếp tục cho đến khi cuối cùng có một cô bò đi vào vị trí mà cô bò đầu tiên trong chu trình chiếm giữ lúc ban đầu. Chẳng hạn, với cách sắp xếp trên, nếu bắt đầu một chu trình bằng bò \(5\), bò \(5\) sẽ đi đến vị trí \(2\) và đẩy bò \(1\) ra; bò \(1\) đi đến vị trí \(4\) và đẩy bò \(2\) ra; bò \(2\) đi đến vị trí \(1\), khép lại chu trình. Các cô bò tiếp tục thực hiện những phép dịch chuyển theo chu trình cho đến khi tất cả đều ở đúng vị trí trong thứ tự \(B\). Lưu ý rằng mỗi cô bò tham gia đúng một phép dịch chuyển theo chu trình, trừ khi cô đứng cùng một vị trí trong cả hai thứ tự \(A\)\(B\).

Hãy tính số phép dịch chuyển theo chu trình khác nhau và độ dài của phép dịch chuyển theo chu trình dài nhất khi các cô bò tự sắp xếp lại.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên \(N\).
  • \(N\) dòng tiếp theo, dòng thứ \(i\) chứa số nguyên \(A(i)\).
  • \(N\) dòng cuối, dòng thứ \(i\) chứa số nguyên \(B(i)\).

Ràng buộc

  • \(1 \le N \le 100\).

Dữ liệu ra

In ra hai số nguyên cách nhau bởi dấu cách. Số thứ nhất là số phép dịch chuyển theo chu trình, số thứ hai là số cô bò tham gia phép dịch chuyển dài nhất. Nếu không có phép dịch chuyển theo chu trình nào, in ra \(-1\) cho số thứ hai.

Ví dụ

Ví dụ 1

Input
5
5
1
4
2
3
2
5
3
1
4
Output
2 3
Giải thích

Có hai phép dịch chuyển theo chu trình: một chu trình gồm các bò \(5\), \(1\)\(2\); chu trình còn lại gồm các bò \(3\)\(4\).

Nguồn

USACO 2014 March Contest, Bronze — Reordering the Cows

Tác giả: Brian Dean, 2014.

Bình luận

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

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

Kỳ thi: