Tải bản đầy đủ (.doc) (1 trang)

Bài toán: Tạm biệt người bạn của tôi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (31.1 KB, 1 trang )

Tạm biệt người bạn của tôi
Liz và Lilly đã từng là hai người bạn rất thân thiết nhưng gần đây do một số bất đồng không thể
tháo gỡ nên cuối cùng họ đã quyết định nói lời chia tay với nhau. Họ đều nói: ″Tao không muốn
thấy mặt mày thêm lần nào nữa! Tao sẽ xếp những khối đá sao cho dù đi đâu tao cũng không
nhìn bao giờ thấy mặt mày nữa!″
Họ sống trong một ngôi làng nhỏ được chia thành lưới ô vuông kích thước n*n. Liz thường sống ở
góc trên bên trái lưới (vị trí (1,1)) và Lilly sống ở góc dưới bên phải lưới (vị trí (n,n)). Mỗi ô vuông
có thể là khu đất trống, hồ nước hoặc khối đá. Họ không thể đi qua khối đá hoặc hồ nước. Họ
không thể nhìn xuyên qua khối đá nhưng họ có thể nhìn qua khu đất bằng hoặc hồ nước. Khi di
chuyển, họ chỉ có thể đi theo bốn hướng: bắc, nam, đông, tây và mỗi lần chỉ đi qua được một ô
vuông. Cả hai người đều bị cận nên họ chỉ có thể nhìn không quá k ô vuông (cùng hàng hoặc
cùng cột) ở trước mặt họ. Họ không thể đi hay nhìn qua các ô nằm chéo nhau.
Vì cả hai rất lười nên họ chỉ muốn xếp số khối đá ít nhất. Mỗi khối đá chỉ có thể xếp vào một ô
vuông mà một trong hai cô gái có thể đi đến từ nhà mình. Hãy nhớ, họ đều không muốn xếp
những khối đá quá gần nhà mình, do đó mỗi khối đá phải nằm ở ô vuông cách nhà họ ít nhất m
ô vuông.
Khoảng cách giữa hai lưới ô vuông (x1,y1), (x2,y2) được tính là |(x1 - x2)| + |(y1 - y2)|.
Dữ liệu vào: Lấy từ file văn bản friend.inp
- Dòng đầu tiên chứa 3 số nguyên n, k, m (5≤n≤20, 1≤k≤n, 1≤m≤n) cách nhau bởi một ký tự
trống.
- Dòng thứ i trong n dòng tiếp theo, mỗi dòng chứa n ký tự viết hoa chỉ sơ đồ ngôi làng. Ký tự ′O
′ chỉ hồ nước, ′*′ chỉ khối đá và ′.′ chỉ khu đất trống.
Dữ liệu ra: Đưa ra file văn bản friend.out:
- Dòng đầu là số khối đá ít nhất cần xếp để ngăn cách hai người.
- Các dòng tiếp theo là toạ độ đặt các khối đá, trên mỗi dòng các toạ độ cách nhau bởi một dấu
cách.
Nếu không tìm được kết quả, hãy hiển thị số −1 trên dòng tương ứng.
Ví dụ:
friend.inp
7 4 4
.......


...... *
.... * O.
* *. *. O.
... *...
. O O.. *.
.......
friend.out
2
2 6
4 3
(Không cần kiểm tra dữ liệu vào)

×