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

Tô màu mảng II

Đề bài

Mô tả

Cho một mảng a1,a2,,an. Ta tô màu mỗi phần tử bằng một trong hai màu: trắng hoặc đen. Sau khi tô, mảng a được tách thành hai mảng con:

  • a(0) gồm tất cả phần tử màu trắng, giữ nguyên thứ tự xuất hiện trong a;
  • a(1) gồm tất cả phần tử màu đen, giữ nguyên thứ tự xuất hiện trong a.

Với một mảng c1,c2,,ck, gọi seg(c) là số đoạn thu được sau khi gộp mọi phần tử bằng nhau nằm liền kề nhau thành một. Ví dụ, seg([1,1,2,2,3,3,3,2])=4 vì mảng trở thành [1,2,3,2]. Quy ước số đoạn của mảng rỗng bằng 0.

Hãy chọn cách tô màu sao cho seg(a(0))+seg(a(1)) nhỏ nhất, và in ra giá trị nhỏ nhất đó.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.

Dữ liệu ra

  • In ra một số nguyên duy nhất: tổng số đoạn nhỏ nhất có thể đạt được.

Ràng buộc

  • 1n105
  • 1ain

Ví dụ

Input Output Giải thích
6
1 2 3 1 2 2
4 Chọn a(0)=[1,1,2,2]a(1)=[2,3], khi đó seg(a(0))=seg(a(1))=2, tổng bằng 4.
7
1 2 1 2 1 2 1
2 Chọn a(0)=[1,1,1,1]a(1)=[2,2,2], mỗi mảng chỉ có 1 đoạn, tổng bằng 2.
1
1
1 Một phần tử tạo đúng một đoạn.

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