Máy cắt cỏ

Đề bài

Mô tả

Một khu vườn hình chữ nhật gồm n hàng và m cột. Các hàng được đánh số từ 1 đến n từ trên xuống dưới, các cột được đánh số từ 1 đến m từ trái sang phải. Ô nằm ở hàng r cột c được ký hiệu là (r,c). Mỗi ô hoặc là cỏ sạch, hoặc là cỏ dại.

Bạn đứng cùng máy cắt cỏ tại ô góc trên bên trái (1,1) và ban đầu đang quay mặt sang phải. Tại mỗi bước bạn thực hiện đúng một trong hai thao tác:

  1. Đi một ô theo hướng đang quay mặt: nếu đang quay sang phải thì đi từ (r,c) sang (r,c+1), nếu đang quay sang trái thì đi từ (r,c) sang (r,c1).
  2. Đi xuống một ô, từ (r,c) sang (r+1,c), đồng thời đổi hướng quay mặt sang hướng ngược lại.

Bạn không được phép đi ra ngoài khu vườn. Một ô cỏ dại được cắt ngay khi bạn đứng trên ô đó, không phụ thuộc vào hướng đang quay mặt và việc cắt không tính là một bước đi.

Hãy tìm số bước đi ít nhất để cắt hết toàn bộ cỏ dại trong vườn.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm: số hàng và số cột của khu vườn.
  • n dòng tiếp theo, mỗi dòng chứa m ký tự mô tả khu vườn. Ký tự G nghĩa là ô đó là cỏ sạch, ký tự W nghĩa là ô đó có cỏ dại.

Đảm bảo ô góc trên bên trái (1,1) luôn là cỏ sạch.

Dữ liệu ra

In ra một số nguyên duy nhất: số bước đi ít nhất để cắt hết cỏ dại.

Ràng buộc

  • 1n,m150
  • Mỗi ký tự của lưới thuộc {G, W}
  • Ô (1,1)G

Ví dụ

Input Output Giải thích
4 5
GWGGW
GGWGG
GWGGG
WGGGG
11 Hàng 1 đi sang phải từ cột 1 tới cột 5 (4 bước, cắt (1,2)(1,5)), xuống hàng 2 rồi đi sang trái từ cột 5 về cột 2 (3 bước, cắt (2,3)), xuống hàng 3 và đứng yên (đã ở cột 2, cắt (3,2)), xuống hàng 4 rồi đi sang trái 1 bước tới cột 1 (cắt (4,1)). Tổng 4+1+3+1+0+1+1=11 bước.
3 3
GWW
WWW
WWG
7 Hàng 1 đi sang phải tới cột 3 (2 bước), xuống hàng 2 (1 bước) rồi đi sang trái về cột 1 (2 bước), xuống hàng 3 (1 bước) rồi đi sang phải tới cột 2 (1 bước). Tổng 7 bước, quét đủ cả 7 ô cỏ dại.
1 1
G
0 Không có cỏ dại nào, không cần di chuyển.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0