trang chủ / bài tập / balsubsets

Tập Con Cân Bằng

Đề bài

Mô tả

Cho một lưới ô vuông N×N, mỗi ô được đánh dấu là có cỏ ('G') hoặc không có cỏ ('.').

Một tập con không rỗng các ô được gọi là cân bằng nếu thỏa mãn tất cả các điều kiện sau:

  1. Tất cả các ô trong tập con đều có cỏ.
  2. Tập con liên thông 4 chiều: tồn tại đường đi giữa bất kỳ hai ô nào trong tập con, mỗi bước di chuyển đến ô kề cạnh (trên, dưới, trái, phải).
  3. Nếu các ô (x1,y)(x2,y) (với x1x2) thuộc tập con, thì mọi ô (x,y) với x1xx2 cũng thuộc tập con.
  4. Nếu các ô (x,y1)(x,y2) (với y1y2) thuộc tập con, thì mọi ô (x,y) với y1yy2 cũng thuộc tập con.

Đếm số tập con cân bằng theo modulo 109+7.

Dữ liệu vào

Dòng đầu tiên chứa số nguyên N.

  • N dòng tiếp theo, mỗi dòng là một chuỗi N ký tự. Ký tự thứ j của dòng thứ i (từ trên xuống) bằng 'G' nếu ô (i,j) có cỏ, hoặc '.' nếu không.

Dữ liệu ra

Một số nguyên duy nhất: số tập con cân bằng theo modulo 109+7.

Ràng buộc

  • 1N150
  • Test 1–4: N4
  • Test 5–10: N20
  • Test 11–28: Không có ràng buộc bổ sung

Ví dụ

Input Output Giải thích
2
GG
GG
13 Tất cả 13 tập con liên thông 4 chiều đều thỏa mãn điều kiện cân bằng.
4
GGGG
GGGG
GG.G
GGGG
642 Ví dụ tập con không thỏa mãn điều kiện 3: các ô {(1,1),(1,2),(2,2),(3,1),(3,2)} tạo thành hình liên thông nhưng trong cột 1 có ô (1,1) và (3,1) mà thiếu (2,1).

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0