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

Tô loang

Đề bài

Mô tả

Cho một dãy gồm n ô vuông xếp thành hàng, đánh số từ 1 đến n từ trái sang phải. Ô thứ i ban đầu có màu ci.

Hai ô ij (với ij) được gọi là thuộc cùng một thành phần liên thông nếu tất cả các ô trên đoạn từ i đến j có cùng màu, tức là ci=cjci=ck với mọi k thỏa i<k<j. Nói cách khác, một thành phần liên thông là một đoạn tối đại các ô liên tiếp cùng màu. Ví dụ, dãy [3,3,3]1 thành phần liên thông, còn dãy [5,2,4,4]3 thành phần liên thông.

Trò chơi "tô loang" (flood fill) diễn ra như sau:

  • Ban đầu, bạn chọn một ô xuất phát bất kỳ (bước chọn này không được tính là một lượt).
  • Ở mỗi lượt, bạn đổi màu của toàn bộ thành phần liên thông đang chứa ô xuất phát sang một màu bất kỳ khác.

Khi một thành phần liên thông đổi màu và trở nên trùng màu với các thành phần liền kề, chúng sẽ hợp nhất thành một thành phần lớn hơn (vẫn chứa ô xuất phát).

Hãy tìm số lượt tối thiểu cần thực hiện để toàn bộ dãy trở thành một màu duy nhất.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: số lượng ô.
  • Dòng thứ hai chứa n số nguyên c1,c2,,cn: màu ban đầu của các ô.

Dữ liệu ra

  • In ra một số nguyên duy nhất: số lượt tối thiểu cần thiết.

Ràng buộc

  • 1n5000
  • 1ci5000

Ví dụ

Input Output Giải thích
4
5 2 2 1
2 Chọn ô số 2 làm ô xuất phát, sau đó: [5,2,2,1][5,5,5,1][1,1,1,1].
8
4 5 2 2 1 3 5 5
4 Chọn ô số 5 làm ô xuất phát rồi lần lượt tô thành các màu 2,3,5,4.
1
4
0 Dãy đã chỉ có một màu nên không cần lượt nào.

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