trang chủ / đề bài / sprinklers2

Vòi Phun Nước 2

Đề bài

Mô tả

Farmer John có một trang trại dạng lưới N×N (1≤N≤2000). Mỗi ô (i,j) (hàng i, cột j, đánh số từ 1) hoặc là trống (.) hoặc bị một con bò chiếm (W) — các ô có bò không thể đặt vòi phun.

Farmer John muốn tưới toàn bộ lưới bằng hai loại vòi phun:

  • Vòi ngô ngọt đặt tại (I,J) tưới tất cả ô (i,j) với i≥I và j≤J (vùng dưới-trái).
  • Vòi cỏ linh lăng đặt tại (I,J) tưới tất cả ô (i,j) với i≤I và j≥J (vùng trên-phải).

Yêu cầu: Mỗi ô (i,j) phải được tưới bởi đúng một loại vòi (hoặc chỉ ngô ngọt, hoặc chỉ cỏ linh lăng). Đếm số cách lắp đặt vòi phun hợp lệ, lấy modulo 109+7.

Lưu ý: Một ô trống có thể không có vòi nào, có một vòi ngô ngọt, hoặc có một vòi cỏ linh lăng — miễn là điều kiện phủ sóng được thỏa mãn.

Dữ liệu vào

  • Dòng đầu: số nguyên N.
  • N dòng tiếp theo, mỗi dòng gồm N ký tự . hoặc W.

Dữ liệu ra

Một số nguyên duy nhất — số cấu hình hợp lệ modulo 109+7.

Ràng buộc

  • 1≤N≤2000

Ví dụ

Input Output Giải thích
2
..
..
28 Lưới 2×2 toàn ô trống, có 28 cách phủ hợp lệ.
4
..W.
..WW
WW..
...W
2304 Lưới 4×4 với một số ô bị bò chiếm.

Ghi chú

Trong ví dụ 1, lưới 2×2 gồm 4 ô trống. Mỗi cách phân chia hợp lệ ứng với một đường đi từ góc trên-trái xuống biên dưới hoặc biên phải của lưới, phân tách vùng tưới bởi vòi ngô ngọt (dưới-trái) và vùng tưới bởi vòi cỏ linh lăng (trên-phải).

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