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

Biển và đảo

Đề bài

Mô tả

Bản đồ của một vùng biển là một lưới ô vuông gồm N hàng và N cột. Ban đầu mọi ô đều là biển. Bạn được phép phủ cát lên một số ô tùy ý.

Một đảo là một nhóm ô cát liên thông tối đa, trong đó hai ô kề nhau khi chúng chung một cạnh (kề trên, dưới, trái, phải). Nói cách khác, từ một ô cát bất kỳ của đảo có thể đi tới mọi ô cát khác của đảo bằng cách chỉ đi qua các ô cát kề cạnh. Hai đảo khác nhau không có ô chung.

Hãy chọn tập ô để phủ cát sao cho trên bản đồ xuất hiện đúng K đảo, hoặc cho biết điều đó là không thể. Không có yêu cầu nào về kích thước các đảo.

Dữ liệu vào

Một dòng duy nhất chứa hai số nguyên NK: kích thước bản đồ và số đảo cần tạo.

Dữ liệu ra

Nếu không tồn tại cách phủ cát thỏa mãn, in ra một dòng chứa NO.

Ngược lại, dòng đầu in ra YES, sau đó in N dòng mô tả bản đồ. Mỗi dòng gồm đúng N ký tự, trong đó S là ô biển và L là ô cát.

Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 1N100
  • 0KN2

Ví dụ

Input Output Giải thích
5 2 YES
LSLSS
SSSSS
SSSSS
SSSSS
SSSSS
Hai ô cát (1,1)(1,3) không kề cạnh nhau nên tạo thành đúng 2 đảo. Nhiều đáp án khác cũng được chấp nhận, chẳng hạn phủ cát hai hàng cách nhau.
5 25 NO Lưới 5×525 ô, nhưng nhiều nhất chỉ tạo được 25/2=13 đảo, nên K=25 là không thể.

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 csc 6.12.0.200 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 kotlinc 2.4.10 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 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 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0