Cắt ảnh chứa ngôi sao

Đề bài

Mô tả

Cho một bức ảnh đen trắng dạng ma trận n×m gồm các ký tự '0' và '1'. Ký tự '1' tương ứng với một điểm ảnh màu trắng, ký tự '0' là điểm ảnh màu đen.

Một ngôi sao được xác định bởi một điểm ảnh trắng nằm ở tâm cùng với bốn điểm ảnh trắng kề cạnh với nó (trên, dưới, trái, phải) — tức là một hình chữ thập gồm 5 điểm ảnh đều màu trắng:

 1
111
 1

Ta muốn cắt ra một vùng hình chữ nhật từ bức ảnh sao cho vùng đó chứa không ít hơn k ngôi sao. Các ngôi sao có thể giao nhau, có thể dùng chung các điểm ảnh trắng. Một ngôi sao được coi là nằm trong vùng chữ nhật nếu cả 5 điểm ảnh tạo nên nó đều nằm trong vùng đó.

Cạnh của vùng chữ nhật song song với cạnh của bức ảnh, và đường cắt đi thẳng theo ranh giới giữa các điểm ảnh. Một vùng chữ nhật được xác định bởi một dải hàng liên tiếp và một dải cột liên tiếp của bức ảnh.

Hãy đếm số cách cắt ra một vùng chữ nhật thỏa mãn điều kiện trên. Hai cách được coi là khác nhau nếu vùng chữ nhật được cắt khác nhau.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, mk.
  • n dòng tiếp theo, mỗi dòng chứa m ký tự '0' hoặc '1' mô tả bức ảnh.

Dữ liệu ra

  • Một số nguyên duy nhất — số cách cắt vùng chữ nhật chứa ít nhất k ngôi sao.

Ràng buộc

  • 1n,m500
  • 1kn·m
  • Kết quả có thể vượt quá phạm vi số nguyên 32-bit.

Ví dụ

Input Output Giải thích
4 6 2
111000
111100
011011
000111
6 Mọi vùng chữ nhật có hai góc đối nằm tại các ô (1,1)(x,y) với x3y4 đều chứa đủ 2 ngôi sao; có đúng 6 vùng như vậy.
5 5 4
11111
11111
11111
11111
11111
9 Mọi vùng chữ nhật có cả hai cạnh không nhỏ hơn 4 đều thỏa mãn. Các kích thước 4×4, 4×5, 5×4, 5×5 cắt được lần lượt 4, 2, 2, 1 cách, tổng cộng 9.
6 6 10
101010
111111
111111
111111
111111
010101
3 Chỉ những vùng đủ lớn mới gom được tối thiểu 10 ngôi sao.

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