IOÍ96 Ngày thi thứ nhấ t

Một phần của tài liệu ĐỀ THI OLYMPIC TIN HỌC QUỐC TẾ potx (Trang 67 - 71)

- .LCN với chương trình LOGO, PAS với chương trình PASCAL

IOÍ96 Ngày thi thứ nhấ t

Bài toán 1: Sắp xếp chuỗi theo ba tiêu thức

Sắp xếp là một trong những công việc được thực hiện nhiều nhất với sự giúp đỡ của máy tính. Xét một bài toán sắp xếp đặc biệt trong đó các thông tin cần sắp xếp theo ba tiêu thức khác nhaụ Ví dụ, khi ta sắp xếp những người được trao huy chương trong một cuộc thi theo màu huy chương: những người được trao huy chương vàng đứng trước, sau đó đến những người được trao huy chương bạc và cuối cùng là những người được huy chương đồng.

Trong bài toán này, các tiêu thức sắp xếp là các số nguyên 1, 2 và 3. Trật tự sắp xếp là tăng dần. Sắp xếp được hoàn thành sau một chuỗi sự thay đổi vị trí.

Cho trước các tiêu thức sắp xếp, hãy viết chương trình xác định số lần hoán đổi vị trí ít nhất cần thiết để sắp xếp được một chuỗi các sự kiện (Yêu cầu A). Xây dựng trật tự hoán đổi vị trí để được chuỗi kết quả (Yêu cầu B).

Input

Dòng đầu tiên của file INPUT.TXT chứa số bản ghi N cần sắp xếp (1<=N<=1000). Mỗi dòng trong số N dòng tiếp theo chứa các tiêu thức sắp xếp.

Output

Dòng đầu tiên của file OUTPUT.TXT báo cáo số lần hoán đổi vị trí ít nhất L để được chuỗi kết quả (Yêu cầu A). L dòng tiếp theo chỉ thứ tự các hoán đổị Mỗi dòng chứa một hoạt động hoán đổi được mô tả bằng hai số p và q (vị trí của hai bản ghi được hoán đổi) (Yêu cầu B). Các vị trí được đánh số từ 1 đến N.

Ví dụ:

File input và output tương ứng. INPUT.TXT OUTPUT.TXT 9 4 2 1 3 2 4 7 1 9 2 3 5 9 3 3 2 3 1

Bài toán 2: Tiền tố dài nhất

Cấu trúc một số sinh vật được thể hiện qua các thành phần cấu tạo nên chúng. Các thành phần đó được ký hiệu bằng các ký tự viết hoạ Các nhà sinh vật học muốn phân ly chuỗi thành phần dài thành các chuỗi ngắn hơn. Các chuỗi ngắn hơn này được gọi là chuỗi gốc. Ta có thể phát biểu rằng một chuỗi S được tạo thành từ các chuỗi gốc P nếu trong thành phần chuỗi P có nhiều chuỗi gốc p1,..., pn. Các chuỗi gốc p1,...,pn được kết nối theo thứ tự không có khoảng trống. Một chuỗi gốc có thể xuất hiện nhiều lần trong chuỗi và không nhất thiết tất cả các chuỗi gốc phải cùng xuất hiện. Ví dụ chuỗi ABABACABAAB có thể được tạo thành từ các chuỗi gốc dưới:

{A, AB, BA, CA, BBC}.

K ký tự đầu tiên trong chuỗi S được gọi là tiền tố với chiều dài K của chuỗi S. Hãy viết chương trình nhận các chuỗi gốc P và thứ tự các thành phần của chuỗi T, từ đó, xác định chiều dài tối đa của tiền tố dài nhất được tạo thành từ các chuỗi gốc trong chuỗi gốc P.

Input

Input gồm hai filẹ File INPUT.TXT cho trước các chuỗi gốc P, còn file DATẠTXT chứa thứ tự thành phần T để kiểm trạ Dòng đầu của file INPUT.TXT chứa N là số các chuỗi gốc P (1<=N<=100). Mỗi chuỗi gốc được xác định trên hai dòng liền nhaụ Dòng trước chứa chiều dài L của chuỗi gốc (1<=L<=20). Dòng sau chứa chuỗi gốc gồm một chuỗi L ký tự viết hoa (từ 'Á đến 'Z'). Có N chuỗi gốc khác nhaụ

Mỗi dòng trong file DATẠTXT chứa một ký tự viết hoa ở đầu dòng. File này kết thúc bằng một dòng chứa dấu ('.').

Output

Dòng đầu tiên của file OUTPUT.TXT chứa chiều dài tối đa của tiền tố thứ tự thành phần T dài nhất có thể được tạo thành từ các chuỗi gốc P.

Ví du:

Input và Output

File input và output tương ứng.

Bài toán 3: Ô vuông thần bí

Hình 1: Trạng thái ban đầu

Sau sự thành công của trò chơi Rubik, ông Rubik đã phát minh ra phiên bản trong mặt phẳng của trò chơi này với tên gọi lưới ô vuông thần bí. Đây là một lưới gồm 8 ô vuông bằng nhau (hình 1).

Trong bài toán này, ta xét trò chơi với mỗi ô vuông có một màu khác nhaụ Tám màu sắc được biểu diễn bằng tám số nguyên dương (hình 1). Trạng thái ban đầu của lưới ô vuông được biểu diễn bằng một chuỗi màu bắt đầu từ màu của ô phía trên bên trái theo hướng kim đồng hồ. Ví dụ, trạng thái trong hình 1 biểu diễn bằng chuỗi (1,2,3,4,5,6,7,8). Đây là trạng thái ban đầụ

Có ba cách biến đổi cơ bản được biểu diễn bằng các ký tự 'Á, 'B' và 'C': 'Á: đổi chỗ giữa hàng trên cùng và hàng dưới cùng,

'B': quay hình chữ nhật sang phải một vòng,

'C': quay bốn ô vuông ở giữa một vòng theo chiều kim đồng hồ. Tất cả các trạng thái đều được tạo thành khi thực hiện ba thao tác trên.

Kết quả của các thao tác cơ bản được thể hiện trên hình 2. Các số bên ngoài lưới ô vuông chỉ vị trí các ô vuông. Nếu ô vuông ở vị trí p chứa số i nghĩa là sau khi thực hiện thao tác, ô vuông có vị trí ban đầu là i sẽ chuyển sang vị trí p.

Hình 2: Các thao tác cơ bản (adsbygoogle = window.adsbygoogle || []).push({});

Hãy viết chương trình tìm chuỗi thao tác cơ bản để chuyển từ trạng thái ban đầu trong hình 1 sang trạng thái đích xác định (Yêu cầu A). Chương trình sẽ được cho thêm hai điểm nếu độ dài chuỗi thao tác dưới 300 (Yêu cầu B).

Input

Tệp INPUT.TXT chứa 8 số nguyên dương mô tả trạng thái đích.

Output

Trong tệp OUTPUT.TXT, trên dòng đầu tiên, chương trình của bạn hãy viết độ dài L của chuỗi thao tác. L dòng tiếp theo, mỗi dòng chứa tên một thao tác cơ bản.

Công cụ

MTOOL.EXE là một chương trình trên thư mục của bài toán cho phép bạn chơi trò chơi ô vuông thần bí. Bằng cách thực hiện lệnh “mtool input.txt output.txt”, bạn sẽ đến được trạng thái đích và chuỗi thao tác.

Ví dụ

The 9th International Olympiad in Informatics, 1997.

Một phần của tài liệu ĐỀ THI OLYMPIC TIN HỌC QUỐC TẾ potx (Trang 67 - 71)