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

Bộ lọc Posterize

Đề bài

Mô tả

Cho một ảnh đen trắng gồm n điểm ảnh, điểm ảnh thứ i có màu pi là một số nguyên trong đoạn [0,255].

Bạn cần chia dải màu [0,255] thành các nhóm gồm những màu liên tiếp. Mỗi nhóm phải thoả:

  • Các màu trong nhóm tạo thành một đoạn liên tiếp [l,r] (tức gồm tất cả các màu l,l+1,,r).
  • Kích thước nhóm không vượt quá k, nghĩa là rl+1k.
  • Mỗi màu trong [0,255] thuộc về đúng một nhóm.

Với mỗi nhóm, ta chọn một màu bất kỳ trong nhóm làm khoá của nhóm đó. Sau đó, màu của mỗi điểm ảnh được thay bằng khoá của nhóm chứa nó, thu được một mảng n số.

Hãy chia nhóm và chọn khoá sao cho mảng kết quả là nhỏ nhất theo thứ tự từ điển.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk: số điểm ảnh và kích thước tối đa của một nhóm.
  • Dòng thứ hai chứa n số nguyên p1,p2,,pn: màu của các điểm ảnh.

Dữ liệu ra

In ra n số nguyên cách nhau bởi dấu cách: mảng nhỏ nhất theo thứ tự từ điển sau khi áp dụng bộ lọc.

Ràng buộc

  • 1n105
  • 1k256
  • 0pi255

Ví dụ

Input Output Giải thích
4 3
2 14 3 4
0 12 3 3 Màu 2 thuộc nhóm [0,2] khoá 0. Màu 14 thuộc nhóm [12,14] khoá 12. Vì nhóm [0,2] đã chiếm các màu 0, 1, 2 nên màu 3 không thể ghép về khoá nhỏ hơn 3, nó tạo nhóm [3,4] khoá 3 (dùng chung cho cả màu 4).
5 2
0 2 1 255 254
0 1 1 254 254 Điểm đầu là màu 0 nên chỉ cần nhóm [0,0] khoá 0 (không cần lấn sang màu 1). Nhờ đó màu 2 ghép được nhóm [1,2] khoá 1, và màu 1 dùng chung nhóm này. Màu 255 và 254 tạo nhóm [254,255] khoá 254.

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