#P0604. 实验鼠的投喂计划

实验鼠的投喂计划

题目描述

小鼠研究员小白管理一批实验鼠,每只鼠有固定编号(11 ~ 10610^6)。

实验室每天会从一批鼠中抽取一只进行实验,但为了避免同一只鼠短期内被重复抽取产生应激反应,系统会记录最近参与实验的 mm 只鼠。

每天抽鼠时规则如下:

  • 如果被抽到的鼠不在最近记录中,就需要为它安排一次适应性训练,并把它加入记录末尾。
  • 如果被抽到的鼠已在最近记录中,说明它在近期已参加过实验,今天不再安排训练,但要将它移到记录的末尾(表示刚刚又被访问过)。
  • 如果记录已满(达到 mm 只鼠)且要加入新鼠,则删除记录中最久之前被访问的那一只

给定 nn 天的抽鼠记录,问总共安排了多少次 “适应性训练”。

输入格式

第一行两个整数 n, mn,\ mnn 是实验天数,mm 是最多记录数。

第二行 nn 个整数,表示每天抽到的鼠编号。

输出格式

一个整数,表示适应性训练的次数。

样例

10 3
1 2 3 4 3 2 1 5 4 1
7

样例1解释

初始记录为空。

11 天:鼠 11 不在记录 → 安排训练,记录 =[1]=[1],次数 =1=1

22 天:鼠 22 不在记录 → 安排训练,记录 =[1, 2]=[1,\ 2],次数 =2=2

33 天:鼠 33 不在记录 → 安排训练,记录 =[1,2,3]=[1,2,3],次数 =3=3

44 天:鼠 44 不在记录,记录已满 → 淘汰最早的 11,记录 =[2,3,4]=[2,3,4],次数 =4=4

55 天:鼠 33 在记录 → 不安排训练,但将 33 移到末尾,记录 =[2, 4, 3]=[2,\ 4,\ 3]

66 天:鼠 22 在记录 → 不安排训练,但将 22 移到末尾,记录 =[4, 3, 2]=[4,\ 3,\ 2]

77 天:鼠 11 不在记录,记录已满 → 淘汰最早的 44,记录 =[3, 2, 1]=[3,\ 2,\ 1],次数 =5=5

88 天:鼠 55 不在记录,记录已满 → 淘汰最早的 33,记录 =[2, 1, 5]=[2,\ 1,\ 5],次数 =6=6

99 天:鼠 44 不在记录,记录已满 → 淘汰最早的 22,记录 =[1, 5, 4]=[1,\ 5,\ 4],次数 =7=7

1010 天:鼠 11 在记录 → 不安排训练,但将 11 移到末尾,记录 =[5, 4, 1]=[5,\ 4,\ 1]

总次数 =7= 7

数据范围

对于 80%80\% 的数据,1m<n10001\le m<n\le 1000

对于 100%100\% 的数据,1m<n1061\le m<n\le 10^6

数据已从 10510^5 提升到 10610^6