NHA TRANG – KHÁNH HOÀ HỘI TIN HỌC VIỆT NAM
OLYMPIC TIN HỌC SINH VIÊN LẦN THỨ XI
ĐỀ CHÍNH THỨC
KHỐI THI: CHUYÊN
Thời gian làm bài: 180 phút
Ngày thi: 26 – 04 – 2002
Nơi thi: Trường Đại học Thuỷ sản Nha Trang
Anh/chị hãy lập trình giải các bài toán sau:
BÀI 1: ĐIỀU KHIỂN ROBOT Tên chương trình: ROBOT.???
Trong cuộc thi lập trình điều khiển Robot giữa các đội sinh viên các trường đại học Ban Giám
khảo cung cấp cho các đội một loại Robot có khả năng tự thay đổi hình dạng bề ngoài của nó.
Hình dạng bề ngoài của Robot được xác định bởi vào véctơ trạng thái G = (G
1
, G
2
, …, G
N
),
các giá trị G
1
thuộc khoảng [1, N] và khác nhau từng đội với mọi i.
Nói hai trạng thái GA và GB là khác nhau nếu tồn tại ít nhất một chỉ số mà GA
i
≠ GB
i
.
Sau mỗi đơn vị thời gian, véctơ G thay đổi theo một bảng quy tắc định sẵn Q, trong đó, nếu
Q
1
= K, thì vào thời điểm kế tiếp giá trị của G
i
sẽ bằng giá trị của G
K
tại thời điểm hiện tại.
Ví dụ: với N = 5 và bảng biến đổi Q = ( 2, 1, 5, 3, 4) và véctơ trạng thái hiện tại G = (1, 2, 3,
4, 5), thì véctơ G ở thời điểm tiếp theo sẽ là (2, 1, 5, 3, 4).
1 2 3 4 5
2 1 5 3 4
ở thời điểm tiếp theo nữa sẽ là G = (1, 2, 4, 5, 3).
Với N cho trước (2N80), các đội phải lập trình xác định bảng biến đổi Q. Đội nào có bảng
điều khiển mang lại cho Robot nhiều trạng thái khác nhau nhất từ một trạng thái bắt đầu bất
kỳ là đội thắng cuộc
Yêu cầu: Xác định bảng biến đổi để thắng cuộc.
Dữ liệu: Vào từ file văn bản ROBOT.INP, gồm 1 số nguyên N.
Kết quả: Đưa ra file văn bản ROBOT.OUT:
Dòng đầu tiên: Số nguyên M cho biết số trạng thái khác nhau mà Robot có thể mang,
Dòng thứ 2: N số nguyên xác định bằng Q tìm được, các số khác nhau ít nhất một khoảng
trắng.
Ví dụ:
ROBOT.INP ROBOT.OUT
5 6
2 1 5 3 4
BÀI 2: GHÉP SỐ Tên chương trình: NUM.???
Cho hai số tự nhiên A có N chữ số và B có M chữ số (2N,M100). Xét các số nguyên dương có
các tính chất sau:
Có N + M chữ số
Có thể đánh dấu N chữ số trong C để các chữ số được đánh dấu (giữ nguyên trình tự xuất
hiện trong C) tạo thành A và các chữ số không được đánh dấu (giữ nguyên trình tự) tạo
thành B.
Yêu cầu: Hãy tìm số lớn nhất C
max
và số nhỏ nhất C
min
thoả mãn các điều kiện trên.
Dữ liệu: Vào từ file văn bản NUM.INP, gồm 2 dòng:
Dòng đầu chứa số nguyên A.
Dòng thứ 2 chứa số nguyên B.
Kết quả: đưa ra file văn bản NUM.OUT 2 dòng:
Dòng đầu: chứa số nhỏ nhất C
min
tìm được
Dòng thứ 2: chứa số lớn nhất C
max
tìm được
Ví dụ:
NUM.INP NUM.OUT
20
4181
204181
421810
Bài 3: CHIP Tên chương trình: CHIP.???
Ứng dụng công nghệ Nano, người ta đã sản xuất các con chíp với hàng triệu chân trên 1mm
2
.
Các linh kiện được cấy trên một đường tròn có dây dẫn điện, đảm bảo 2 linh kiện bất kỳ kề
nhau (trên đường tròn) đều dây dẫn nối trực tiếp. Các linh kiện được đánh số từ 1 tới N
(3<N10000).
Thiết kế ban đầu được xây dựng trên cơ sở công nghệ cũ, nên mặc dù đáp ứng yêu cầu
phẳng hoá đồ thị (không có đường dây dẫn giao nhau ngoài điểm chung có thể có ở tại linh
kiện), nhưng nếu bố trí chúng trên đường tròn thì có thể thứ tự các linh kiện theo vị trí trên
đường tròn không phải là từ 1 tới N mà là một hoán vị nào đó của các số 1, 2, …, N. Ngoài
ra, ở sơ đồ cũ còn có thêm một số đường nối tạo thành những dây cung (không giao nhau).
Điều này sẽ không cản trở đáng kểđã nâng cấp chất lượng linh kiện (trên thực chất, phải gọi
là cụm linh kiện thì chính xác hơn), khử bỏ được các đường nối là dây cung. Các linh kiện
vẫn giữ nguyên cách đánh số trước đây để tránh nhầm lẫn khi sử dụng kho tài liệu kỹ thuật số
đồ sộ vốn có.
Ở thiết kế ban đầu, người ta cho biết số linh kiện N trong mạch và các cặp linh kiện (I, J), mà
giữa chúng cần có đường nối trực tiếp. Dĩ nhiên, giữa hai linh kiện I, J bất kỳ có không quá
một đường nối và số lượng đường nối không quá 2N-3 (Yêu cầu phẳng hoá!). Bảng thiết kế
có dạng:
5
4 3
5 2
1 3
2 4
5 3
2 5
5 4 Sơ đồ cũ Sơ đồ mới
Trong bản thiết thiết kế mới, các đường nối 4 với 5 và 4 với 3 bị loại bỏ và người ta chỉ nêu
trình tự bố trí chúng trên đường tròn, bắt đầu từ linh kiện 1 trở đi trở đi, cụ thể là 1 3 5 2 4.
Mọi chuyện sẽ đơn giản nếu người ta còn giữ lại được bản vẽ sơ đồ thiết kế cũ. Nhưng không
may, bản vẽ này lại bị thất lạc. Ta chỉ có thể dựa trên số liệu về các đường nối trực tiếp còn
lưu lại để xác định bản thiết kế mới.
Yêu cầu: từ thông tin ở bản vẽ thiết kế cũ, hãy xác định bản thiết kế mới.
Dữ liệu: vào từ file văn bản CHIP.INP chứa nội dung của bản thiết kế mới.
Dòng đầu tiên chứa số nguyên N,
Các dòng sau: mỗi dòng một cặp số nguyên I, J cho biết hai chân I và J được nối với nhau,
1 I, J N, I J.
Các số trên cùng một dòng cách nhau bởi khoảng trắng.
Kết quả: Đưa ra file văn bản CHIP.OUT mô tả nội dung bản thiết kế mới:
Đưa N dòng, mỗi dòng chứa một số nguyên xác định trình tự bố trí các linh kiện trên đường
tròn, bắt đầu từ 1 trở đi theo chiều hướng đến chân có chỉ số nhỏ hơn trong số hai chân nối
trực tiếp với nó.
Ví dụ:
CHIP.INP CHIP.OUT
5
4 3
5 2
1 3
4 2
5 3
1 4
5 4
1
3
5
2
4
Ghi chú: Cán bộ coi thi không giải thích gì thêm.