CHUYÊN ĐỀ: TÌM KIẾM TRÊN BẢNG HAI CHIỀU
BÀI 1. DI CHUYỂN ROBOT
MỘt ban đồ được cho bảng hình chữ nhật kích thước 𝑚 × 𝑛 được chia thành lưới ô vuông đơn vị (𝑚
hàng và 𝑛 cột), các dòng đánh số từ 1 tới 𝑚 từ trên xuống dưới và các cột đánh số từ 1 tới 𝑛, từ trái qua
phải. Trên mỗi ô (𝑖, 𝑗) chứa một số nguyên 𝑎𝑖𝑗 là độ cao của ô đó. Một robot hiện đứng tại ô (𝑥0 , 𝑦0 ).
Mỗi bước robot có thể di chuyển sang một ô chung cạnh nếu độ độ cao của hai ô không lớn hơn 𝐷 cho
trước.
Yêu cầu: Hãy cho biết từ ô (𝑥0 , 𝑦0 ) robot có thể đi tới được bao nhiêu ô trên bảng.
Dữ liệu: Vào từ file văn bản [Link]
⚫ Dòng 1 chứa năm số nguyên dương 𝑚, 𝑛, 𝑥0 , 𝑦0 và 𝐷 (2 ≤ 𝑚, 𝑛 ≤ 1000; 1 ≤ 𝑥0 ≤ 𝑚; 1 ≤ 𝑦0 ≤
𝑛; 0 ≤ 𝐷 ≤ 1000)
⚫ 𝑚 dòng tiếp theo, dòng thứ 𝑖 chứa 𝑛 số nguyên không âm, số thứ 𝑗 là 𝑎𝑖𝑗 ≤ 1000
Kết quả: Ghi ra file văn bản [Link] một số nguyên duy nhất là số ô trên bảng mà robot có thể
di chuyển tới.
Ví dụ
[Link] [Link]
4 4 1 1 5 7
10 22 20 25
15 12 20 27
19 14 21
20 17 25
Giải thích: Từ ô (1, 1) có thể di chuyển đến 7 ô sau: (1, 1), (2, 1), (2, 2), (3, 2), (3, 1) (4, 2), và (4, 1).
BÀI 1. TÌM MIỀN LIÊN THÔNG
Cho bảng hình chữ nhật kích thước 𝑚 × 𝑛 được chia thành lưới ô vuông đơn vị (𝑚 hàng và 𝑛 cột), các
dòng đánh số từ 1 tới 𝑚 từ trên xuống dưới và các cột đánh số từ 1 tới 𝑛, từ trái qua phải. Trên mỗi ô
(𝑖, 𝑗) chứa một số nguyên 𝑎𝑖𝑗 . Một miều liên thông tà tập hợp tất cả các ô có giá trị bằng nhau mà hai
ô bất kỳ có thể di chuyển tới nhau bằng cách đi qua các ô chung cạnh và cùng giá trị.
Yêu cầu: Hãy cho biết trên bảng có bao nhiêu miền liên thông.
Dữ liệu: Vào từ file văn bản [Link]
⚫ Dòng 1 chứa hai số nguyên dương 𝑚, 𝑛 (2 ≤ 𝑚, 𝑛 ≤ 1000)
⚫ 𝑚 dòng tiếp theo, dòng thứ 𝑖 chứa 𝑛 số nguyên không âm, số thứ 𝑗 là 𝑎𝑖𝑗 ≤ 1000
Kết quả: Ghi ra file văn bản [Link] một số nguyên duy nhất là số miền liên thông trên bảng
tìm được
Ví dụ
[Link] [Link]
4 4 4
1 2 2 2
1 1 2 2
1 1 1
2 2 2
BÀI 2. VÙNG ĐẤT LỚN NHẤT
Một vùng đất được biểu diễn bởi bảng hình chữ nhật kích thước 𝑚 × 𝑛 được chia thành lưới ô vuông
đơn vị (𝑚 hàng và 𝑛 cột), các dòng đánh số từ 1 tới 𝑚 từ trên xuống dưới và các cột đánh số từ 1 tới
𝑛, từ trái qua phải. Trên mỗi ô (𝑖, 𝑗) chứa một số 0 hoặc 1: Ô chứa số 1 là vùng đất còn 0 là vùng nước.
Một hòn đảo tà tập hợp tất cả các ô có giá trị bằng nhau 1 mà hai ô bất kỳ có thể di chuyển tới nhau
bằng cách đi qua các ô chung cạnh và có giá trị 1. Diện tích của một đảo là số ô thuộc đảo đó.
Yêu cầu: Hãy cho biết trên bảng có bao nhiêu đảo và tìm đảo có diện tích lớn nhất.
Dữ liệu: Vào từ file văn bản [Link]
⚫ Dòng 1 chứa hai số nguyên dương 𝑚, 𝑛 (2 ≤ 𝑚, 𝑛 ≤ 1000)
⚫ 𝑚 dòng tiếp theo, dòng thứ 𝑖 chứa dòng thứ 𝑖 của bảng gồm 𝑛 số 0 hoặc 1.
Kết quả: Ghi ra file văn bản [Link]:
• Dòng đầu là số đảo,
• Dòng thứ hai là diện tích của đảo lớn nhất.
Ví dụ
[Link] [Link]
4 3
0 0 1 6
0 1
0 0 0 1
1 0 0 1 1
BÀI 3. TÌM ĐƯỜNG NGẮN NHẤT.
Một vùng đất được biểu diễn bởi bảng hình chữ nhật kích thước 𝑚 × 𝑛 được chia thành lưới ô vuông
đơn vị (𝑚 hàng và 𝑛 cột), các dòng đánh số từ 1 tới 𝑚 từ trên xuống dưới và các cột đánh số từ 1 tới
𝑛, từ trái qua phải. Trên mỗi ô (𝑖, 𝑗) chứa một số 0 hoặc 1: Ô chứa số 1 là vùng đất còn 0 là vùng nước.
Từ một ô là vùng đất cho phép di chuyển sang ô chung cánh và cũng là vùng đất.
Một đường đi từ ô (𝑥1 , 𝑦1 ) là vùng đất tới ô (𝑥2 , 𝑦2 ) cũng là vùng đất là một dãy các vùng đất bắt đầu
từ ô (𝑥1 , 𝑦1 ) kết thúc tại ô (𝑥2 , 𝑦2 ).
Yêu cầu: Cho trước 4 số 𝑥1 , 𝑦1 , 𝑥2 , 𝑦2 , tìm một đường đi từ ô (𝑥1 , 𝑦1 ) tới ô (𝑥2 , 𝑦2 ) với số ô trên đường
đi là ít nhất.
Dữ liệu: Vào từ file văn bản [Link]
⚫ Dòng 1 chứa sáu số nguyên dương 𝑚, 𝑛, 𝑥1 , 𝑦1 , 𝑥2 , 𝑦2 (2 ≤ 𝑚, 𝑛 ≤ 1000; 1 ≤ 𝑥1 , 𝑥2 ≤ 𝑚; 1 ≤
𝑦1 , 𝑦2 ≤ 𝑛)
⚫ 𝑚 dòng tiếp theo, dòng thứ 𝑖 chứa dòng thứ 𝑖 của bảng gồm 𝑛 số 0 hoặc 1.
Kết quả: Ghi ra file văn bản [Link] số ô trên đường đi ngắn nhất tìm được. Trong trường hợp
không thể đi được ghi ra số -1.
Ví dụ
[Link] [Link]
4 5 2 2 4 5 8
0 1
1 0 0 1
1 0 1 1 1
1 1 1 0 1
BÀI 4. TÌM MIỀN LIÊN THÔNG LỚN NHẤT
Cho bảng hình chữ nhật kích thước 𝑚 × 𝑛 được chia thành lưới ô vuông đơn vị (𝑚 hàng và 𝑛 cột), các
dòng đánh số từ 1 tới 𝑚 từ trên xuống dưới và các cột đánh số từ 1 tới 𝑛, từ trái qua phải. Trên mỗi ô
(𝑖, 𝑗) chứa một số nguyên 𝑎𝑖𝑗 . Một miều liên thông tà tập hợp tất cả các ô có giá trị bằng nhau mà hai
ô bất kỳ có thể di chuyển tới nhau bằng cách đi qua các ô chung cạnh và cùng giá trị. Diện tích của một
miền là số ô thuộc miền đó.
Yêu cầu: Hãy tìm miền liên thông có diện chích lớn nhất.
Dữ liệu: Vào từ file văn bản [Link]
⚫ Dòng 1 chứa hai số nguyên dương 𝑚, 𝑛 (2 ≤ 𝑚, 𝑛 ≤ 1000)
⚫ 𝑚 dòng tiếp theo, dòng thứ 𝑖 chứa 𝑛 số nguyên không âm, số thứ 𝑗 là 𝑎𝑖𝑗 ≤ 1000
Kết quả: Ghi ra file văn bản [Link] một số nguyên duy nhất là số miền liên thông trên bảng
tìm được
Ví dụ
[Link] [Link]
4 4 6
1 2 2 2
1 1 2 2
1 1 1 4
2 2 2 4
Giải thích: Miền diện tích lớn nhất có diện tích bằng 6 gồm các ô có giá trị bằng 1.