Mặc dù giữa 2 điểm du lịch bất kỳ của Vùng chỉ có không quá một đoạn đường (hai chiều) nối trực tiếp chúng với nhau, mỗi đoạn đường phải nối hai điểm du lịch khác nhau và các đoạn đường [r]
Trang 1Bộ giáo dục và Đào tạo
Đề thi chọn đội tuyển Tin học Quốc gia
Thời gian làm bài: 300 phút Ngày thi thứ nhất: 3-5-2003
Tổng quan đề thi ngày thứ nhất
Tên bài Tên chơng trình Tên file dữ liệu Tên file kết quả
Bài 1 Palindrome PALINDR.PAS PALINDR.INP PALINDR.OUT
Bài 2 Sơn ghế PAINT.PAS PAINT.INP PAINT.OUT
Bài 3 Thêm đờng ADDPATH.PAS ADDPATH.INP ADDPATH.OUT
Hãy lập trình giải các bài toán sau đây:
Bài 1 Palindrome
Palindrome là xâu ký tự mà nếu đọc nó từ trái sang phải cũng nh từ phải sang trái ta đợc cùng một xâu Một xâu ký tự bất kỳ luôn có thể biểu diễn nh là một dãy các palindrome nếu nh ta coi xâu chỉ gồm một ký tự luôn là palindrome
Ví dụ: Xâu ‘bobseesanna’ có thể biểu diễn dới dạng dãy các polindrome theo nhiều cách, chẳng hạn
‘bobseesanna’ = ‘bob’ + ‘sees’ + ‘anna’
‘bobseesanna’ = ‘bob’ + ‘s’ + ‘ee’ + ’s’ + ‘anna’
‘bobseesanna’ = ‘b’ +’o’ + ‘b’ + ‘sees’ + ‘a’ + ‘n’ + ‘n’ + ‘a’
Yêu cầu: Cho xâu ký tự s, cần tìm cách biểu diễn xâu s dới dạng một dãy gồm một số ít nhất các
palindrome
Ví dụ: Cho s = ‘bobseesanna’, do ta có ‘bobseesanna’ = ‘bob’ + ‘sees’ + ‘anna’ và không thể biểu
diễn ‘bobseesanna’ bởi ít hơn là 3 palindrome nên biểu diễn này chính là biểu diễn cần tìm
Dữ liệu: Vào từ file văn bản PALINDR.INP gồm một dòng chứa xâu ký tự s gồm không quá 255 ký
tự
Kết quả: Đa ra file văn bản PALINDR.OUT:
Dòng đầu tiên ghi k là số lợng ít nhất các palindrome trong biểu diễn tìm đợc;
Dòng thứ i trong số k dòng tiếp theo ghi palindrome p i (i = 1, 2, , k) sao cho s = p1p2 p k.
Ví dụ:
bobseesanna 3
bob sees anna
aa bbaaaabb
Bài 2 Sơn ghế
Ghế ngồi trờn sõn vận động được chia thành từng lụ, mỗi lụ gồm M hàng đỏnh số từ 1 đến M, mỗi hàng cú N ghế đỏnh số từ 1 đến N từ trỏi qua phải (4 ≤ M, N ≤ 20) Ghế cú 3 loại: màu trắng (W),
màu xanh (B) và màu đỏ (R) Theo thiết kế, mỗi lụ chỉ lắp ghế cựng một màu, nhưng vì khụng nắm được thiết kế, bộ phận thi cụng đó lắp cỏc ghế một cỏch ngẫu nhiờn mà khụng quan tõm đến màu của chỳng Do thời điểm khỏnh thành sõn đó đến quỏ gần, khụng cú đủ thời gian để thỏo dỡ lắp đặt lại cỏc ghế, nờn người ta dựng một rụ bốt sơn trang trớ để sơn lại cỏc ghế Rụ bốt hoạt động theo nguyờn tắc sau:
Nếu hai ghế kề nhau trờn cựng một hàng cú màu khỏc nhau thỡ rụ bốt sẽ sơn lại cặp ghế này bởi màu thứ ba
Nếu hai hàng ghế kề nhau cú màu khỏc nhau, nhưng ghế ở mỗi hàng là cựng màu, thỡ rụ bốt
sẽ sơn lại ghế của hai hàng này thành màu thứ ba, trong trường hợp này, cú N cặp ghế được
sơn lại
Đề Chính thức
Trang 2Dựa vào ảnh chụp toàn cảnh lô ghế, Bạn được đề nghị cài đặt một chương trình điều khiển rô bốt hoạt động theo nguyên tắc đã nêu để sơn lại các ghế sao cho tất cả các ghế trong lô có cùng một
màu đồng thời tổng số lượt cặp ghế phải sơn là càng ít càng tốt.
Ví dụ, với M = 4, N = 4 và bức tranh toµn c¶nh cña l« ghÕ là:
BBBR BBBB
WWWW WWWW
Có 10 lượt cặp ghế được rô bốt sơn theo chương trình đi u khi n sau: ều khiển sau: ển sau:
BBBR
BBBB
WWWW
WWWW
BBBB WWWW WWWW
BBBB WWWW WWWW
BBBB WWWW WWWW
BBBB WWWW WWWW
BBBB WWWW WWWW
BBBB
WWWW WWWW
WWWW WWWW WWWW
Yêu cầu: Tìm cách điều khiển rô bốt thoả mãn các yêu cầu đặt ra.
Dữ liệu: Vào từ file văn bản PAINT.INP :
Dòng đầu tiên chứa 2 số nguyên M N,
hiện màu các ghế trong hàng thứ i
Kết quả: Đưa ra file văn bản PAINT.OUT:
Dòng đầu tiên chứa k là tổng số lượt cặp ghế phải sơn theo cách điều khiển tìm được.
Các dòng tiếp theo mô tả cách điều khiển rô bốt sơn ghế, mỗi dòng có một trong hai dạng (tương ứng với hai nguyên tắc hoạt động của rô bốt) sau:
o Dạng 1: G i j cho biết rô bốt phải sơn cặp ghế (j, j+1) ở hàng ghế i;
o Dạng 2: H i cho biết rô bốt phải sơn các cặp ghế ở hai hàng i và i+1.
o Các ký tự và số trên cùng dòng phải được ghi cách nhau bởi dấu cách
Ví dụ:
4 4 BBBR BBBB WWWW WWWW
10
G 1 3
G 1 2
G 1 3
G 1 2
G 1 1
G 1 3
H 1
Bài 3 Thêm đường
Vùng sinh thái Hoàn Mỹ có N điểm du lịch hết sức hấp dẫn được đánh số tuần tự 1, 2, , N Mặc
dù giữa 2 điểm du lịch bất kỳ của Vùng chỉ có không quá một đoạn đường (hai chiều) nối trực tiếp chúng với nhau, mỗi đoạn đường phải nối hai điểm du lịch khác nhau và các đoạn đường khác nhau chỉ có thể gặp nhau ở các điểm du lịch, song toàn bộ hệ thống đường giao thông ở Vùng sinh thái
ấy vẫn cho phép đi từ một điểm du lịch i tuỳ ý tới một điểm du lịch j tuỳ ý khác Tuy nhiên, hệ thống đường giao thông ấy vẫn còn rất hạn chế: Sau khi đi từ điểm du lịch i tới điểm du lịch j, nếu muốn quay trở lại điểm i, ngêi ta buộc phải đi ngược trở lại toàn bộ các đoạn đường đã đi qua Để
chuẩn bị đón du khách của SEAGAME 22, Giám đốc Vùng sinh thái đã quyết định đầu tư xây dựng thêm một số đoạn đường mới nối trực tiếp một số cặp điểm du lịch mà giữa chúng còn chưa
có đoạn đường nối trực tiếp Khi đó trên hệ thống giao thông của Vùng xuất hiện các đường đi khép kín có tính chất là mỗi điểm du lịch và mỗi đoạn đường chỉ xuất hiện không quá một lần trên
Trang 3các đường đi khép kín đó Tập hợp các điểm du lịch và các đoạn đường cùng nằm trên một đường
đi khép kín kiểu như vậy tạo thành một Phân khu du lịch
Yêu cầu: Hãy tìm một cách bổ sung thêm một số ít nhất các đoạn đường mới sao cho mỗi điểm du
lịch của Vùng sinh thái chỉ thuộc vào đúng một Phân khu du lịch
Dữ liệu: Vào từ file văn bản ADDPATH.INP:
Dòng đầu tiên ghi N là số điểm du lịch của Vùng sinh thái (3 N 200),
Các dòng tiếp theo, mỗi dòng ghi cặp số nguyên tương ứnglà chỉ số của 2 điểm du lịch được nối trực tiếp với nhau
Kết quả: Đưa ra file văn bản ADDPATH.OUT:
Dòng đầu ghi số -1 nếu không tồn tại cách bổ sung các đoạn đường thoả mãn yêu cầu đặt ra,
ngược lại, ghi số R là số nhỏ nhất tìm được
Dòng thứ i trong R dòng tiếp theo chứa hai số nguyên dương a i, bi là chỉ số 2 điểm du lịch
mà đoạn đường mới thứ i nối trực tiếp chúng với nhau
Ví dụ:
4
1 2
2 3
2 4
1 2
1 3
3 5
3 4
5 6
5 7
2
6 7
4 2