Mã vạch

Đề bài

Mô tả

Cho một bức ảnh gồm n×m điểm ảnh, mỗi điểm ảnh có màu trắng hoặc đen.

Bạn cần đổi màu một số điểm ảnh (càng ít càng tốt) để bức ảnh trở thành một mã vạch. Bức ảnh là mã vạch nếu thỏa mãn đồng thời hai điều kiện:

  • Mọi điểm ảnh trong cùng một cột có cùng màu.
  • Nếu gộp các cột liên tiếp có cùng màu thành từng nhóm, thì mỗi nhóm phải có độ rộng ít nhất x cột và nhiều nhất y cột.

Hãy tìm số điểm ảnh ít nhất cần đổi màu. Dữ liệu đảm bảo luôn tồn tại đáp án.

Dữ liệu vào

  • Dòng đầu chứa bốn số nguyên n, m, x, y.
  • n dòng tiếp theo, mỗi dòng gồm đúng m ký tự mô tả bức ảnh ban đầu: ký tự . là điểm ảnh trắng, ký tự # là điểm ảnh đen.

Dữ liệu ra

Một số nguyên duy nhất: số điểm ảnh ít nhất cần đổi màu.

Ràng buộc

  • 1n,m,x,y1000
  • xy

Ví dụ

Input Output Giải thích
6 5 1 2
##.#.
.###.
###..
#...#
.##.#
###..
11 Một cách tối ưu là biến mọi dòng thành .##.. (nhóm rộng 1, 2, 2 cột), tốn 11 lần đổi màu.
2 5 1 1
#####
.....
5 x=y=1 nên mọi nhóm rộng đúng 1 cột, tức là các cột phải xen kẽ màu. Một cách tối ưu là biến mọi dòng thà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.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