Giải bài toán ICEFROG bằng tìm kiếm nhị phân
ICEFROG
(Nguồn bài: CROATIAN OPEN 2009)
Chú chó sói Vjekoslav đang chạy trốn khỏi một đám thợ săn khát máu. Những người thợ săn rất thông minh và họ đang nấp sau những cái cây. Vjekoslav biết điều đó, nhưng không biết chính xác cây nào. Con sói muốn về nơi ở của nó một cách an toàn nhất, tức là càng xa cây càng tốt !
Khu rừng có thể được mô tả bằng một hình chữ nhật kích thước N*M. Những ô trống được đánh dấu bằng ký hiệu '.' , những ô có cây là '+' , vị trí ban đầu của Vjekoslav là 'V' và nhà của nó là 'J'. Vjekoslav có thể chạy từ ô nó đang đứng đến 4 ô chung cạnh xung quanh nó đứng.
Nếu Vjekoslav đang ở ô (R,C) và có một cái cây ở ô (A,B) thì khoảng cách được tính theo công thức :|R-A| + |C-B|. Hãy giúp Vjekoslav tìm đường đi an toàn nhất để về nhà. Đường đi an toàn nhất được hiểu là đường đi mà khoảng cách bé nhất từ một ô nào đó trên đường đi đó đến tất cả các cây là lớn nhất.
Dữ liệu vào: Đọc từ file ICEFROG.INP
- Dòng đầu tiên là hai số N,M (0
- N dòng sau mỗi dòng gồm N ký tự thuộc tập {'+','.','V','J'} mô tả khu rừng.
Input luôn đảm bảo chứa một ký tự 'V', một ký tự 'J' và ít nhất một ký tự '+'.
Kết quả: Gồm ra file ICEFROG.OUT một dòng duy nhất chứa số nguyên là kết quả.
Ví dụ:
|
ICEFROG.INP |
ICEFROG.OUT |
|
4 5 ..... .+++. .+.+. V+.J+ |
0
|
|
4 4 +... .... .... V..J |
3 |
Hướng dẫn:
Cách làm tương tự như bài trên, kết hợp Loang với chặt nhị phân khoảng cách.
- BÌNH TĨNH TRƯỚC HỘP THƯ SỐ – NGHỆ THUẬT NHẬN DIỆN EMAIL PHISHING TỪ GÓC NHÌN NGHIỆP VỤ
- HÓA THÂN THÀNH "KẺ TẤN CÔNG": KHI HIỂU RÕ CẠM BẪY, TA PHÒNG THỦ VỮNG VÀNG HƠN
- CÁC CÔNG CỤ XÂY DỰNG GIAO DIỆN ỨNG DỤNG BẰNG TRÍ TUỆ NHÂN TẠO (AI)
- Silent Lynx khai thác lỗ hổng WinRAR để triển khai Reverse Shell nhằm tấn công các cơ quan chính phủ
- Thông tin xác thực ConnectWise bị chiếm dụng, 173 môi trường Microsoft 365 bị truy cập trái phép