trang chủ / bài tập / 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 (1N2000). 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 iIjJ (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 iIjJ (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

  • 1N2000

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.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