trang chủ / đề bài / pushabox

Đẩy Hộp

Đề bài

Mô tả

Bessie đang ở trong một cái kho hình chữ nhật kích thước N×M ô vuông. Mỗi ô có thể là ô trống (.), chướng ngại vật (#), vị trí của Bessie (A), hoặc vị trí của hộp (B). Bessie có thể di chuyển lên, xuống, trái, phải sang các ô trống liền kề (không phải chướng ngại vật và không phải ô chứa hộp).

Khi Bessie di chuyển vào ô chứa hộp, cô sẽ đẩy hộp theo cùng hướng đó: hộp dịch chuyển sang ô tiếp theo theo hướng di chuyển của Bessie. Nếu ô tiếp theo của hộp là chướng ngại vật hoặc nằm ngoài biên, việc đẩy không hợp lệ và Bessie không thể thực hiện bước đó.

Cho Q truy vấn, mỗi truy vấn hỏi: Bessie có thể đẩy hộp đến ô (r,c) hay không?

Dữ liệu vào

  • Dòng đầu: ba số nguyên N, M, Q.
  • N dòng tiếp theo: mô tả lưới kho, mỗi dòng gồm M ký tự (#, ., A, B).
  • Q dòng tiếp theo: mỗi dòng gồm hai số nguyên r, c là tọa độ ô đích (1-indexed).

Dữ liệu ra

Với mỗi truy vấn, in YES nếu Bessie có thể đẩy hộp đến ô (r,c), ngược lại in NO.

Ràng buộc

  • 1≤N,M≤1500
  • 1≤Q≤105
  • Đúng một ô là A và đúng một ô là B.
  • Ô đích (r,c) của mỗi truy vấn luôn là ô trống hoặc ô B.

Ví dụ

Input Output Giải thích
5 5 4
##.##
##.##
A.B..
##.##
##.##
3 2
3 5
1 3
5 3
NO
YES
NO
NO
Hộp ban đầu ở (3,3), Bessie ở (3,1). Bessie chỉ đứng được ở phía Tây của hộp nên chỉ có thể đẩy hộp sang Đông, tới (3,4) rồi (3,5). Truy vấn (3,2) trả lời NO vì muốn đưa hộp sang Tây thì Bessie phải đứng ở (3,4), mà lúc đầu cô không sang được phía đó.
5 5 16
.....
.###.
.#.#.
A.B..
##.##
1 1
1 2
1 3
1 4
1 5
2 1
2 5
3 1
3 3
3 5
4 1
4 2
4 3
4 4
4 5
5 3
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
YES
YES
YES
YES
NO
Hai ô (3,3) và (5,3) chỉ nối với phần còn lại qua chính ô chứa hộp, nên Bessie không bao giờ đứng được ở phía Bắc hay phía Nam của hộp, tức là hộp chỉ bị đẩy dọc hàng 4. Đi vòng qua hàng 1 để đổi bên, Bessie đẩy được hộp tới mọi ô của hàng 4.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0