JOI 2017 - Plush Toys

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Một thành viên của JOI làm việc tại cửa hàng đồ chơi. Hôm nay, người này cần sắp xếp lại khu vực thú nhồi bông trong cửa hàng.

Trên một chiếc kệ, \(N\) con thú nhồi bông được đặt thành một hàng từ trái sang phải. Kệ được chia thành \(N\) ngăn và mỗi ngăn chứa đúng một con thú. Cửa hàng bán tổng cộng \(M\) loại thú nhồi bông, được đánh số từ \(1\) đến \(M\). Mỗi con thú trên kệ thuộc một trong \(M\) loại này, và mỗi loại xuất hiện ít nhất một lần.

Để trông đẹp mắt hơn, người này muốn sắp xếp lại sao cho tất cả thú nhồi bông cùng loại nằm liên tiếp trên kệ. Việc sắp xếp được thực hiện như sau:

  1. Chọn một số con trong \(N\) con thú và lấy chúng ra khỏi kệ. Vị trí của những con không bị lấy ra không thay đổi.
  2. Đặt những con đã lấy ra trở lại các ngăn trống theo thứ tự tùy ý.

Sau khi sắp xếp, tất cả thú nhồi bông cùng loại phải nằm liên tiếp trên kệ.

Hãy tính số thú nhồi bông ít nhất cần lấy ra để thực hiện việc sắp xếp.

Dữ liệu vào

Dữ liệu vào gồm \(N+1\) dòng:

  • Dòng thứ nhất chứa hai số nguyên \(N, M\), lần lượt là số thú nhồi bông và số loại thú.
  • Mỗi dòng trong \(N\) dòng tiếp theo chứa một số nguyên. Số nguyên trên dòng thứ \(i\) là loại của con thú nằm ở ngăn thứ \(i\) tính từ trái sang phải.

Dữ liệu ra

In ra một số nguyên trên một dòng: số thú nhồi bông ít nhất cần lấy ra.

Ràng buộc

Các giá trị thỏa mãn:

\[ 1 \le N \le 100\,000, \]
\[ 1 \le M \le 20. \]

Mỗi loại từ \(1\) đến \(M\) xuất hiện ít nhất một lần.

Phân nhóm

Bài có năm bộ dữ liệu chấm, mỗi bộ trị giá \(20\) điểm.

Ví dụ

Ví dụ 1

Input
7 2
1
2
2
2
1
2
1
Output
2
Giải thích

Ban đầu, các loại thú từ trái sang phải là \(1,2,2,2,1,2,1\). Một cách tối ưu là lấy con thứ nhất và con thứ sáu tính từ trái sang, sau đó đặt một con loại \(2\) vào ngăn thứ nhất và một con loại \(1\) vào ngăn thứ sáu. Khi đó chỉ cần lấy ra \(2\) con.

Ví dụ 2

Input
12 4
1
3
2
4
2
1
2
3
1
1
3
4
Output
7

Nguồn

Kỳ thi chọn đội tuyển Olympic Tin học Nhật Bản JOI 2016/2017, vòng sơ khảo, bài 4: Plush Toys.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: