trang chủ / đề bài / replicat

Replication

Đề bài

Mô tả

Một robot tự nhân bản được thả xuống lưới N×N gồm các ô đá và ô trống. Ban đầu chỉ có đúng một robot, đứng tại một trong các ô được đánh dấu S.

Mỗi giờ, toàn bộ robot đang có (bản gốc lẫn các bản sao) cùng di chuyển sang ô kề theo cùng một hướng trong 4 hướng: lên, xuống, trái, phải. Đàn robot không được thực hiện bước đi khiến một robot nào đó bước vào ô đá.

Cứ sau mỗi D giờ, tức tại các thời điểm D,2D,3D,…, mỗi robot sinh thêm một bản sao tại cả 4 ô kề của nó, bản thân robot vẫn đứng yên tại chỗ. Việc nhân bản là bắt buộc và xảy ra sau bước đi của giờ đó. Vì vậy sau t giờ, đàn robot phủ đúng hình thoi gồm mọi ô có khoảng cách Manhattan không quá ⌊t/D⌋ tới ô trung tâm.

Nếu một bản sao sinh ra rơi vào ô đá thì cả đàn robot tắt ngay lập tức và không hoạt động trở lại. Những ô mà đàn robot đã chiếm giữ trước lần nhân bản hỏng đó vẫn được tính là đã từng chứa robot.

Xét mọi cách chọn ô xuất phát S và mọi cách di chuyển, hãy đếm số ô trống có thể chứa robot (bản gốc hoặc bản sao) tại một thời điểm nào đó.

Dữ liệu vào

  • Dòng 1: hai số nguyên N và D
  • N dòng tiếp theo: mỗi dòng N ký tự mô tả lưới
    • . hoặc S là ô trống (S là một vị trí xuất phát có thể)
    • # là ô đá

Dữ liệu ra

Một số nguyên duy nhất: số ô trống có thể chứa robot.

Ràng buộc

  • 3≤N≤1000
  • 1≤D≤109
  • Mọi ô nằm trên biên của lưới đều là đá
  • Có ít nhất một ô S

Ví dụ

Input Output Giải thích
10 1
##########
#........#
#S.......#
#........#
##########
#S....S..#
##########
##########
##########
##########
15 D=1 nên bán kính tăng thêm 1 sau mỗi giờ. Hành lang ở dòng 6 chỉ cao một ô, lần nhân bản đầu tiên chắc chắn đặt bản sao lên đá, nên mỗi robot ở đó chỉ kịp đi thêm một bước: các ô (6,2), (6,3), (6,6), (6,7), (6,8), tất cả 5 ô. Vùng trên cao ba ô cho phép bán kính 1 và phủ thêm 10 ô.
10 2
##########
#.#......#
#.#......#
#S.......#
#.#......#
#.#......#
##########
##########
##########
##########
28 D=2 nên robot có hai giờ để di chuyển trước mỗi lần nhân bản. Nó kịp rời hành lang hẹp bên trái để sang vùng rộng bên phải, nơi có ô cách đá tới 3 bước và đàn robot phủ được hình thoi bán kính 2.
10 2
##########
#.S#.....#
#..#.....#
#S.......#
#..#.....#
#..#.....#
##########
##########
##########
##########
10 Chỉ ô (4,3) cách đá 2 bước nên chỉ tại đó đàn robot mới phủ được hình thoi bán kính 1. Ô (6,2) chỉ có thể bị chạm tới đúng vào giờ mà lần nhân bản ngay sau đó phá hủy cả đàn, nhưng nó vẫn được tính.

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