Trimino

Đề bài

Mô tả

Cho một bảng cỡ n×m được tô màu như bàn cờ (các ô đen và trắng xen kẽ nhau). Một số ô đã bị cắt bỏ. Cần lát toàn bộ các ô còn lại bằng các quân trimino — hình chữ nhật 1×3 (hoặc 3×1, có thể xoay tự do), trong đó hai ô ở hai đầu là trắng và ô ở giữa là đen.

Yêu cầu khi đặt trimino:

  • Màu của từng ô trimino phải khớp với màu của ô tương ứng trên bàn cờ (đen khớp đen, trắng khớp trắng).
  • Các trimino không được nhô ra ngoài bảng, không được chồng lên nhau và không được đặt lên các ô đã bị cắt.
  • Tất cả các ô chưa bị cắt phải được phủ.

Ngoài ra, cần biểu diễn cách lát bằng nhiều nhất 4 ký hiệu a, b, c, d: cả ba ô của cùng một trimino được đánh dấu bởi cùng một ký hiệu, và hai trimino có chung một cạnh phải được đánh dấu bởi hai ký hiệu khác nhau (hai trimino không kề cạnh có thể trùng ký hiệu).

Hãy kiểm tra xem có cách lát hợp lệ hay không và in ra một cách lát.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên nm — kích thước bảng.
  • n dòng tiếp theo, mỗi dòng m ký tự mô tả bảng: ký tự . — ô đã bị cắt; ký tự w — ô trắng; ký tự b — ô đen.

Dữ liệu đảm bảo rằng nếu thêm lại các ô đã cắt thì bảng nhận được là một bàn cờ hợp lệ (đen–trắng xen kẽ), tuy có thể có kích thước không tiêu chuẩn.

Dữ liệu ra

Nếu tồn tại một cách lát hợp lệ dùng nhiều nhất 4 ký hiệu, dòng đầu tiên in YES, tiếp theo là n dòng, mỗi dòng m ký tự mô tả cách lát: ô bị cắt in ., còn mỗi trimino được đánh dấu bằng một trong bốn ký tự a, b, c, d (cả ba ô cùng ký tự, hai trimino kề cạnh khác ký tự).

Nếu không tồn tại cách lát hợp lệ, in NO.

Nếu có nhiều đáp án đúng, in ra bất kỳ đáp án nào.

Ràng buộc

  • 1n,m1000.

Ví dụ

Input Output Giải thích
1 3
...
YES
...
Bảng chỉ toàn ô bị cắt — không có ô nào cần phủ.
1 3
wbw
YES
ddd
Một trimino ngang duy nhất phủ toàn bộ bảng.
2 2
wb
bw
NO Số ô đen là 2 nhưng số ô trắng cũng là 2, không thể phủ (mỗi trimino cần đúng 2 ô trắng cho 1 ô đen).
6 10
.w.wbw.wbw
wbwbw.w.w.
bw.wbwbwbw
w.wbw.wbwb
...wbw.w.w
..wbw.wbw.
YES
.a.bbb.bbb
daccc.b.d.
da.dddbadc
d.aaa.badc
...bbb.a.c
..ccc.ccc.
Một trong nhiều cách lát hợp lệ.

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