149
139. TRẠM NGHỈ
M
ộ
t toán k
ỵ
s
ĩ
b
ỏ
ng
ự
a
đ
i thám hi
ể
m m
ộ
t khu r
ừ
ng và
đế
n khi tr
ờ
i t
ố
i, h
ọ
mu
ố
n
đ
i v
ề
nh
ữ
ng tr
ạ
m
ngh
ỉ
. R
ấ
t may là các k
ỵ
s
ĩ
đề
u có b
ả
n
đồ
khu r
ừ
ng trong tay, nh
ờ
đ
ó có th
ể
xác
đị
nh chính xác v
ị
trí
c
ủ
a h
ọ
, các tr
ạ
m ngh
ỉ
, các khu v
ự
c có thú d
ữ
và t
ấ
t nhiên c
ả
v
ị
trí c
ủ
a các con ng
ự
a (n
ơ
i h
ọ
đ
ã b
ỏ
l
ạ
i).
M
ỗ
i k
ỵ
s
ĩ
s
ẽ
ph
ả
i ch
ọ
n cho mình m
ộ
t con ng
ự
a, m
ộ
t tr
ạ
m ngh
ỉ
và dùng còi siêu âm g
ọ
i con ng
ự
a
đ
ó
v
ề
tr
ạ
m ngh
ỉ
đ
ã ch
ọ
n. M
ỗ
i tr
ạ
m ngh
ỉ
ch
ỉ
đủ
ch
ỗ
cho m
ộ
t k
ỵ
s
ĩ
và m
ộ
t con ng
ự
a.
Giả sử rằng có m trạm nghỉ, n kỵ sĩ, n con ngựa và bạn là một trong số những kỵ sĩ đó. Hãy vạch
ra hành trình cho các kỵ sĩ và các con ngựa để thời gian tính từ lúc bắt đầu cho tới khi tất cả các
con ngựa và các kỵ sĩ về tới trạm nghỉ tương ứng là nhỏ nhất.
B
ả
n
đồ
khu r
ừ
ng
đượ
c mã hoá b
ằ
ng m
ộ
t l
ướ
i ô vuông
đơ
n v
ị
kích th
ướ
c pxq. Trên m
ỗ
i ô ghi m
ộ
t
trong 5 ký hi
ệ
u:
•
"%":
Đị
a
đ
i
ể
m có thú d
ữ
•
".":
Đị
a
đ
i
ể
m an toàn (không có thú d
ữ
)
•
"&":
Đị
a
đ
i
ể
m an toàn có m
ộ
t con ng
ự
a
đ
ang
đứ
ng
•
"*":
Đị
a
đ
i
ể
m an toàn có m
ộ
t k
ỵ
s
ĩ
đ
ang
đứ
ng
•
"@": Tr
ạ
m ngh
ỉ
V
ớ
i 1
đơ
n v
ị
th
ờ
i gian, m
ỗ
i k
ỵ
s
ĩ
và m
ỗ
i con ng
ự
a có th
ể
th
ự
c hi
ệ
n m
ộ
t b
ướ
c
đ
i. Nhìn trên b
ả
n
đồ
,
m
ỗ
i b
ướ
c
đ
i c
ủ
a m
ộ
t k
ỵ
s
ĩ
là m
ộ
t phép di chuy
ể
n t
ừ
ô
đ
ang
đứ
ng sang m
ộ
t trong các ô k
ề
c
ạ
nh,
b
ướ
c
đ
i này
đượ
c mã hoá b
ằ
ng m
ộ
t trong 4 ký hi
ệ
u {E, W, S, N}. M
ỗ
i b
ướ
c
đ
i c
ủ
a m
ộ
t con ng
ự
a là
m
ộ
t phép di chuy
ể
n nh
ư
m
ộ
t n
ướ
c
đ
i c
ủ
a quân mã theo lu
ậ
t c
ờ
, b
ướ
c
đ
i này
đượ
c mã hoá b
ằ
ng m
ộ
t
trong 8 ký hi
ệ
u {1, 2, 3, 4, 5, 6, 7, 8}. Các k
ỵ
s
ĩ
c
ũ
ng nh
ư
các con ng
ự
a không
đượ
c
đ
i t
ớ
i ô có thú
d
ữ
hay
đ
i ra ngoài b
ả
n
đồ
. Các ký hi
ệ
u t
ươ
ng
ứ
ng v
ớ
i các h
ướ
ng
đ
i
đượ
c ch
ỉ
ra trong hình d
ướ
i
đ
ây:
6 7
N 5 8
W * E &
S 4 1
3 2
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n HORSEMAN.INP
•
Dòng
đầ
u tiên: Ch
ứ
a hai s
ố
p, q cách nhau 1 d
ấ
u cách
•
p dòng ti
ế
p theo, dòng th
ứ
i ch
ứ
a q ký t
ự
, ký t
ự
th
ứ
j là ký hi
ệ
u ghi trên ô (i, j) c
ủ
a b
ả
n
đồ
Kết quả:
Ghi ra file v
ă
n b
ả
n HORSEMAN.OUT
•
Dòng
đầ
u tiên: Ghi th
ờ
i gian nhanh nh
ấ
t
để
t
ấ
t c
ả
các k
ỵ
s
ĩ
và các con ng
ự
a v
ề
t
ớ
i tr
ạ
m ngh
ỉ
t
ươ
ng
ứ
ng
•
2n dòng ti
ế
p theo, c
ứ
hai dòng ghi hành trình c
ủ
a m
ộ
t k
ỵ
s
ĩ
:
♦
Dòng 1: Ghi hai s
ố
x, y cách nhau m
ộ
t d
ấ
u cách là v
ị
trí ô (x, y) c
ủ
a m
ộ
t k
ỵ
s
ĩ
♦
Dòng 2: Ghi m
ộ
t dãy ký t
ự
t
ượ
ng tr
ư
ng cho m
ộ
t dãy các b
ướ
c
đ
i c
ủ
a k
ỵ
s
ĩ
t
ừ
ô (x, y) theo
đ
úng th
ứ
t
ự
này
đế
n m
ộ
t tr
ạ
m ngh
ỉ
.
•
2n dòng ti
ế
p theo, c
ứ
hai dòng ghi hành trình c
ủ
a m
ộ
t con ng
ự
a:
♦
Dòng 1: Ghi hai s
ố
u, v cách nhau m
ộ
t d
ấ
u cách là v
ị
trí ô (u, v) c
ủ
a m
ộ
t con ng
ự
a
♦
Dòng 2: Ghi m
ộ
t dãy ký t
ự
t
ượ
ng tr
ư
ng cho m
ộ
t dãy các b
ướ
c
đ
i c
ủ
a con ng
ự
a t
ừ
ô (u, v)
theo
đ
úng th
ứ
t
ự
này
đế
n m
ộ
t tr
ạ
m ngh
ỉ
.
Ràng buộc:
•
5 ≤ p, q ≤ 100
•
1 ≤ n = s
ố
ô "&" = s
ố
ô "*" ≤ 100
•
n ≤ m = s
ố
ô "@" ≤ 100
•
Luôn luôn có ph
ươ
ng án th
ự
c hi
ệ
n yêu c
ầ
u c
ủ
a
đề
bài
150
Ví dụ:
( Kết quả file Output này sai ! ) Đáp án tối ưu phải là 3 mới đúng !
HORSEMAN.INP HORSEMAN.OUT
5 6
.&&.*.
.%%...
@@.@.@
&.....
*...*.
4
1 5
SSW
5 1
NN
5 5
NNE
1 2
3
1 3
2
4 1
1727
151
140. CHIA CÂN BẰNG
Xét
đồ
th
ị
vô h
ướ
ng liên thông G = (V, E) có n
đỉ
nh và m c
ạ
nh, các
đỉ
nh
đượ
c
đ
ánh s
ố
t
ừ
1 t
ớ
i n
Hãy bỏ đi một số ít nhất các cạnh của đồ thị sao cho:
1.
Đồ
th
ị
còn l
ạ
i có
đ
úng 2 thành ph
ầ
n liên thông
2.
Đỉ
nh 1 và
đỉ
nh n không thu
ộ
c cùng m
ộ
t thành ph
ầ
n liên thông
3.
Trong các ph
ươ
ng án tho
ả
mãn c
ả
hai
đ
i
ề
u ki
ệ
n trên, hãy ch
ỉ
ra ph
ươ
ng án mà
độ
chênh l
ệ
ch v
ề
s
ố
đỉ
nh gi
ữ
a hai thành ph
ầ
n liên thông
đ
ó là nh
ỏ
nh
ấ
t
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n BALANCE.INP
•
Dòng 1: Ch
ứ
a hai s
ố
n, m (2 ≤ n ≤ 300)
•
m dòng ti
ế
p theo, m
ỗ
i dòng ch
ứ
a hai s
ố
u, v t
ươ
ng
ứ
ng v
ớ
i m
ộ
t c
ạ
nh (u, v) c
ủ
a
đồ
th
ị
Kết quả:
Ghi ra file v
ă
n b
ả
n BALANCE.OUT
•
Dòng 1: Ghi s
ố
c
ạ
nh
đượ
c b
ỏ
(k)
•
k dòng ti
ế
p theo, m
ỗ
i dòng ghi hai
đỉ
nh t
ươ
ng
ứ
ng v
ớ
i m
ộ
t c
ạ
nh
đượ
c b
ỏ
Ví dụ:
BALANCE.INP BALANCE.OUT
152
141. LĂN XÚC XẮC
Cho m
ộ
t l
ướ
i ô vuông
đơ
n v
ị
kích th
ướ
c mxn, trên m
ỗ
i ô ghi m
ộ
t s
ố
t
ự
nhiên ≤ 7. Có m
ộ
t con súc
s
ắ
c (hình l
ậ
p ph
ươ
ng c
ạ
nh 1
đơ
n v
ị
) n
ằ
m t
ạ
i m
ộ
t ô (x, y) mang s
ố
7. Các m
ặ
t con súc s
ắ
c
đượ
c ghi
các s
ố
nguyên d
ươ
ng t
ừ
1
đế
n 6: m
ặ
t trên mang s
ố
1, m
ặ
t bên h
ướ
ng v
ề
mép trên c
ủ
a l
ướ
i mang s
ố
2, m
ặ
t bên h
ướ
ng v
ề
mép trái c
ủ
a l
ướ
i mang s
ố
3, t
ổ
ng hai s
ố
ghi trên hai m
ặ
t
đố
i di
ệ
n b
ấ
t k
ỳ
luôn
b
ằ
ng 7. (Xem hình v
ẽ
)
1
2
3
1
2
3
4
3
4
1
6 6 6 6
3 4 1 2
Cho phép l
ă
n con súc s
ắ
c sang m
ộ
t trong 4 ô k
ề
c
ạ
nh. Sau m
ỗ
i phép l
ă
n nh
ư
v
ậ
y, m
ặ
t trên c
ủ
a súc
s
ắ
c s
ẽ
tr
ở
thành m
ặ
t bên t
ươ
ng
ứ
ng v
ớ
i h
ướ
ng di chuy
ể
n và m
ặ
t bên theo h
ướ
ng di chuy
ể
n s
ẽ
tr
ở
thành m
ặ
t
đ
áy. M
ộ
t phép l
ă
n
đượ
c g
ọ
i là h
ợ
p l
ệ
n
ế
u nó luôn
đả
m b
ả
o s
ố
ghi
ở
ô súc s
ắ
c
đ
ang
đứ
ng
ho
ặ
c b
ằ
ng 7, ho
ặ
c b
ằ
ng v
ớ
i s
ố
ghi
ở
m
ặ
t
đ
áy c
ủ
a súc s
ắ
c. Nh
ư
ví d
ụ
trên, ta có th
ể
l
ă
n lên trên, sang
ph
ả
i hay sang trái nh
ư
ng không th
ể
l
ă
n xu
ố
ng d
ướ
i.
Yêu cầu:
Hãy chỉ ra một số hữu hạn các phép lăn hợp lệ để lăn con súc sắc ra một ô biên của lưới, nếu có
nhiều phương án thực hiện thì chỉ ra phương án mà tổng các số ghi ở mặt trên của súc sắc sau
mỗi bước di chuyển là cực tiểu.
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n ROLL.INP
•
Dòng 1: Ch
ứ
a 4 s
ố
m, n, x, y (1 < x < m ≤ 300; 1 < y < n ≤ 300)
•
m dòng ti
ế
p theo, dòng th
ứ
i ch
ứ
a n s
ố
mà s
ố
th
ứ
j là s
ố
ghi t
ạ
i ô (i, j) c
ủ
a l
ướ
i
Kết quả:
Ghi ra file v
ă
n b
ả
n ROLL.OUT
G
ồ
m m
ộ
t dòng ch
ứ
a dãy liên ti
ế
p các ký t
ự
, ký t
ự
th
ứ
k có th
ể
là L, R, U ho
ặ
c D t
ươ
ng
ứ
ng v
ớ
i
phép l
ă
n t
ạ
i b
ướ
c th
ứ
k là l
ă
n sang trái, l
ă
n sang ph
ả
i, l
ă
n lên trên hay l
ă
n xu
ố
ng d
ướ
i.
Ví dụ
ROLL.INP ROLL.OUT
9 6 3 3
0 0 0 0 0 0
0 0 2 4 0 0
1 4 7 6 6 6
0 0 2 3 0 0
0 0 0 1 0 0
0 0 0 4 0 0
0 0 0 6 0 0
0 0 0 3 0 0
0 0 0 1 0 0
URDDLULL
153
142. CHUYỂN HÀNG
B
ả
n
đồ
m
ộ
t kho hàng hình ch
ữ
nh
ậ
t kích th
ướ
c mxn
đượ
c chia thành các ô vuông
đơ
n v
ị
(m hàng, n
c
ộ
t: các hàng
đ
ánh s
ố
t
ừ
trên xu
ố
ng d
ướ
i, các c
ộ
t
đ
ánh s
ố
t
ừ
trái qua ph
ả
i). Trên các ô c
ủ
a b
ả
n
đồ
có
m
ộ
t s
ố
ký hi
ệ
u:
•
Các ký hi
ệ
u #
đ
ánh d
ấ
u các ô
đ
ã có m
ộ
t ki
ệ
n hàng x
ế
p s
ẵ
n,
•
M
ộ
t ký hi
ệ
u *:
Đ
ánh d
ấ
u ô
đ
ang có m
ộ
t rô b
ố
t
•
M
ộ
t ký hi
ệ
u $:
Đ
ánh d
ấ
u ô ch
ứ
a ki
ệ
n hàng c
ầ
n x
ế
p
•
M
ộ
t ký hi
ệ
u @:
Đ
ánh d
ấ
u v
ị
trí ô mà c
ầ
n ph
ả
i x
ế
p ki
ệ
n hàng B vào ô
đ
ó
•
Các ký hi
ệ
u d
ấ
u ch
ấ
m ".": Cho bi
ế
t ô
đ
ó tr
ố
ng
T
ạ
i m
ộ
t th
ờ
i
đ
i
ể
m, rô b
ố
t có th
ể
th
ự
c hi
ệ
n m
ộ
t trong 6
độ
ng tác ký hi
ệ
u là:
•
L, R, U, D: T
ươ
ng
ứ
ng v
ớ
i phép di chuy
ể
n c
ủ
a rô b
ố
t trên b
ả
n
đồ
: sang trái, sang ph
ả
i, lên trên,
xu
ố
ng d
ướ
i. Th
ự
c hi
ệ
n m
ộ
t phép di chuy
ể
n m
ấ
t 1 công
•
+, -: Ch
ỉ
đượ
c th
ự
c hi
ệ
n khi rô b
ố
t
đứ
ng
ở
ô bên c
ạ
nh ki
ệ
n hàng $. Khi th
ự
c hi
ệ
n thao tác +, rô
b
ố
t
đứ
ng yên và
đN
y ki
ệ
n hàng $ làm ki
ệ
n hàng này tr
ượ
t theo h
ướ
ng
đN
y,
đế
n khi ch
ạ
m m
ộ
t
ki
ệ
n hàng khác ho
ặ
c t
ườ
ng nhà kho thì d
ừ
ng l
ạ
i. Khi th
ự
c hi
ệ
n thao tác -, rô b
ố
t kéo ki
ệ
n hàng $
v
ề
phía mình và lùi l
ạ
i 1 ô theo h
ướ
ng kéo. Th
ự
c hi
ệ
n thao tác
đN
y ho
ặ
c kéo m
ấ
t C công
Lu
ậ
t: Rô b
ố
t ch
ỉ
đượ
c di chuy
ể
n vào ô không ch
ứ
a hàng c
ủ
a kho.
Hãy tìm cách hướng dẫn rô bốt thực hiện các thao tác để đưa kiện hàng $ về vị trí @ sao cho số
công phải dùng là ít nhất
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n CARGO.INP
•
Dòng 1: Ghi ba s
ố
nguyên d
ươ
ng m, n, C (m, n ≤ 100; c ≤ 100)
•
m dòng ti
ế
p theo, dòng th
ứ
i ghi
đủ
n ký hi
ệ
u trên hàng th
ứ
i c
ủ
a b
ả
n
đồ
theo
đ
úng th
ứ
t
ự
t
ừ
trái
qua ph
ả
i. Các ký hi
ệ
u
đượ
c ghi li
ề
n nhau
Kết quả
: Ghi ra file v
ă
n b
ả
n CARGO.OUT
•
Dòng 1: Ghi s
ố
công c
ầ
n th
ự
c hi
ệ
n
•
Dòng 2: M
ộ
t dãy liên ti
ế
p các ký t
ự
∈ {L, R, U, D, +, -} th
ể
hi
ệ
n dãy các
độ
ng tác c
ầ
n th
ự
c hi
ệ
n
c
ủ
a Rô b
ố
t
Ràng buộc:
Luôn có ph
ươ
ng án th
ự
c hi
ệ
n yêu c
ầ
u
đề
bài
Ví dụ:
CARGO.INP CARGO.OUT CARGO.INP CARGO.OUT
6 8 3
###..###
*$....##
####.###
####..##
#@....##
########
23
+RRRR-UR+DDDRD+
10 10 2
.........#
.####.#.##
*$.......#
#######.##
#######...
#######.#.
#@........
#######.##
##########
##########
34
+RRRRRRR-LUURRD+DDDDD-URRDDL+
154
143. GHÉT NHAU NÉM ĐÁ...
Liz và Lilly
đ
ã t
ừ
ng là nh
ữ
ng ng
ườ
i b
ạ
n r
ấ
t thân, nh
ư
ng h
ọ
đ
ã cãi l
ộ
n và quy
ế
t
đị
nh chia tay nhau.
"Tôi không mu
ố
n nhìn th
ấ
y b
ạ
n n
ữ
a, tôi s
ẽ
đặ
t nh
ữ
ng t
ả
ng
đ
á
ở
đ
âu
đ
ó
để
n
ế
u tôi có
đ
i
đ
âu t
ừ
nhà,
tôi c
ũ
ng không bao gi
ờ
ph
ả
i nhìn th
ấ
y cái b
ả
n m
ặ
t c
ủ
a b
ạ
n" - C
ả
hai
đề
u nói.
L&L cùng s
ố
ng trong m
ộ
t ngôi làng nh
ỏ
đượ
c chia thành l
ướ
i ô vuông
n
x
n
. Nhà c
ủ
a Liz
ở
ô (1, 1)
và nhà Lilly
ở
ô (n, n). M
ỗ
i ô c
ủ
a l
ướ
i mang m
ộ
t trong 3 ký hi
ệ
u:
•
".": Vùng
đấ
t (Land)
•
"X": H
ồ
(Lake)
•
"*": T
ả
ng
đ
á (Rock)
M
ỗ
i ng
ườ
i có th
ể
di chuy
ể
n t
ừ
m
ộ
t ô sang ô k
ề
c
ạ
nh n
ế
u
đ
ó là vùng
đấ
t, và khi
đứ
ng
ở
m
ộ
t ô (x, y),
h
ọ
có th
ể
nhìn th
ấ
y ô (x', y') n
ế
u:
•
Ô (x', y') là cùng hàng ho
ặ
c cùng c
ộ
t v
ớ
i ô (x, y)
•
Kho
ả
ng cách t
ừ
ô (x, y)
đế
n ô (x', y') không quá
k
•
Không có t
ả
ng
đ
á nào ch
ắ
n t
ầ
m m
ắ
t
C
ả
hai
đề
u là k
ẻ
l
ườ
i bi
ế
ng, vì v
ậ
y h
ọ
ch
ỉ
mu
ố
n
đặ
t thêm m
ộ
t s
ố
ít nh
ấ
t các t
ả
ng
đ
á.
Đồ
ng th
ờ
i, các
t
ả
ng
đ
á ph
ả
i
đặ
t cách nhà c
ủ
a m
ỗ
i ng
ườ
i m
ộ
t kho
ả
ng cách t
ố
i thi
ể
u là
m.
Lưu ý: Khoảng cách giữa hai ô (x
1
, y
1
) và (x
2
, y
2
) quy ước là
x
1
- x
2
+
y
1
- y
2
Hãy chỉ ra cách đặt các tảng đá thoả mãn yêu cầu của cả hai người
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n FAREWELL.INP
•
Dòng 1: Ch
ứ
a 3 s
ố
n, k, m (5 ≤ n ≤ 20; 1 ≤ k, m ≤ n) cách nhau
đ
úng 1 d
ấ
u cách
•
n dòng ti
ế
p theo, dòng th
ứ
i ch
ứ
a n ký t
ự
liên ti
ế
p mà ký t
ự
th
ứ
j là ký hi
ệ
u ô (i, j) c
ủ
a l
ướ
i
Kết quả:
Ghi ra file v
ă
n b
ả
n FAREWELL.OUT
•
Dòng 1: Ghi s
ố
t
ả
ng
đ
á ph
ả
i
đặ
t, trong tr
ườ
ng h
ợ
p không có ph
ươ
ng án thì dòng này ghi s
ố
-1
•
Trong tr
ườ
ng h
ợ
p có ph
ươ
ng án kh
ả
thi thì n dòng ti
ế
p theo, dòng th
ứ
i ghi n ký t
ự
liên ti
ế
p mà
ký t
ự
th
ứ
j là ký hi
ệ
u ô (i, j) c
ủ
a l
ướ
i sau khi
đ
ã
đặ
t
đ
á. L
ư
u ý r
ằ
ng ta v
ẫ
n dùng ký hi
ệ
u * cho
nh
ữ
ng t
ả
ng
đ
á
đ
ã có và dùng ký hi
ệ
u "#" cho nh
ữ
ng t
ả
ng
đ
á
đặ
t thêm
Ví dụ
FAREWELL.INP FAREWELL.OUT FAREWELL.INP FAREWELL.OUT
7 4 4
.......
......*
....*X.
**.*.X.
...*...
.XX..*.
.......
2
.......
.....#*
....*X.
**#*.X.
...*...
.XX..*.
.......
8 7 3
........
.XXXXXX.
.X....X.
.X....X.
.X....X.
.X....X.
.XXXXXX.
........
4
...#....
.XXXXXX.
.X....X.
#X....X.
.X....X#
.X....X.
.XXXXXX.
....#...