CF802A Heidi and Library (easy)
题目描述
你终于找到 Heidi 了——她伪装成人类,藏身于一家图书馆。事实上,她在那里呆的时间太久,现在已经成了那家图书馆的馆长!她的工作是购买图书,并将其保存在图书馆里,供人们借阅和阅读。有 $n$ 本不同的书,编号为 $1$ 到 $n$。
我们将关注图书馆连续 $n$ 天的运作。Heidi 已经提前知道,在第 $i$ 天($1 \leq i \leq n$)将会有一位读者来图书馆,借阅编号为 $a_{i}$ 的书,并在当天数小时后将其归还。
Heidi 非常希望让所有客人都满意,因此她会确保在第 $i$ 天该馆里总有书 $a_{i}$ 可供借阅。在第 $i$ 天前的夜晚,她可以选择去书店(书店只在夜间营业,以避开图书馆的竞争)购买任意一本尚未拥有的书,花费 1 瑞士法郎(CHF)。当然,如果图书馆里已经有该书,就无需再次购买。最初,图书馆里没有任何书。
但有一个问题。图书馆的容量为 $k$——也就是说,任何时刻馆内至多只能存放 $k$ 本书。如果购买新书会导致馆内藏书超过 $k$ 本,Heidi 必须先把已拥有的某本图书移出,以腾出空间购入新书。如果以后还需要那本已移出的书,就必须重新购买。
现在给定 $k$ 以及连续 $n$ 天的图书借阅请求序列 $a_{1},a_{2},...,a_{n}$,请问 Heidi 至少需要花费多少瑞士法郎,以满足所有的借阅请求?
输入格式
输入的第一行包含两个整数 $n$ 和 $k$($1 \leq n, k \leq 80$)。
第二行包含 $n$ 个整数 $a_{1}, a_{2}, ..., a_{n}$($1 \leq a_{i} \leq n$),表示每天提出的借阅请求图书序列。
输出格式
输出一行,表示为了满足所有借阅请求,至少需要购买图书所需的总花费。
说明/提示
在第一个测试用例中,Heidi 可以一直保留所有的图书。因此她只需要在第一天前买入书 $1$,第二天前买入书 $2$,总共买两本。
在第二个测试用例中,每次只能保留一本书。因此第一天、第二天和第四天都需要购买新书。
在第三个测试用例中,在第三天购入书 $3$ 前,Heidi 必须决定淘汰书 $1$ 还是书 $2$。显然,应当保留第四天还会被借阅的书 $1$。
由 ChatGPT 5 翻译