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

Heidi va thu vien

Đề bài

Mô tả

Thư viện phục vụ n yêu cầu mượn sách theo thứ tự. Yêu cầu thứ i cần cuốn sách ai.

Tại mọi thời điểm, thư viện chỉ có thể giữ tối đa k cuốn sách trên kệ.

Xử lý các yêu cầu lần lượt. Khi tới yêu cầu cuốn ai:

  • Nếu cuốn ai đang có trên kệ thì phục vụ ngay, không tốn chi phí.
  • Nếu cuốn ai chưa có trên kệ thì phải mua cuốn đó với chi phí 1, rồi đặt lên kệ. Nếu lúc đó kệ đã đủ k cuốn thì trước tiên phải bỏ bớt một cuốn bất kỳ đang có trên kệ (việc bỏ sách không tốn chi phí).

Sách đã bỏ khỏi kệ, nếu về sau cần lại thì phải mua lại từ đầu.

Hãy xác định tổng chi phí nhỏ nhất (số cuốn sách phải mua) để phục vụ hết toàn bộ dãy yêu cầu.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an là mã sách của các yêu cầu.

Dữ liệu ra

  • Một số nguyên duy nhất: tổng chi phí nhỏ nhất.

Ràng buộc

  • 1n,k400000
  • 1ai400000

Ví dụ

Input Output Giải thích
4 100
1 2 2 1
2 Kệ chứa được tới 100 cuốn. Mua cuốn 1 và cuốn 2, sau đó cả hai yêu cầu còn lại đều đã có sẵn. Tổng 2 lần mua.
4 1
1 2 2 1
3 Kệ chỉ chứa 1 cuốn. Mua 1, bỏ 1 để mua 2, giữ 2 phục vụ yêu cầu thứ ba, rồi bỏ 2 để mua lại 1. Tổng 3 lần mua.
4 2
1 2 3 1
3 Kệ chứa 2 cuốn. Mua 1 và 2; khi cần 3 phải bỏ cuốn 2 (vì sau này không dùng lại) để giữ cuốn 1; yêu cầu cuối đã có cuốn 1. Tổng 3 lần mua.

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