#S6U02P04. 【作业】词典缓存

【作业】词典缓存

词典缓存

难度:T2

【知识点:队列】【知识点:模拟】

前置知识:数组、循环、分支、本单元对应队列操作

题目描述

内存最多保存 CC 个不同单词编号,起初为空。依次处理 nn 个编号:已经在内存中时不查词典、不改变顺序;不在时查词典一次,若内存已满先移除最早进入的编号,再把新编号加到末尾。求查词典次数。注意命中旧词不会把它移到末尾。

输入格式

第一行 C,nC,n,第二行 nn 个单词编号。

输出格式

一行一个整数,表示查词典次数。

样例输入

3 7
1 2 1 5 4 4 1

样例输出

5

样例说明

容量为 33,表中内存编号按进入时间从早到晚排列。“命中”表示编号已在内存中,本次不查询,也不移动它的位置。

本次编号 按题目规则发生的事 处理后的内存,早到晚 累计查询次数
11 不在内存,查询并加入 11
22 1,21,2 22
11 命中,顺序不变
55 不在内存,查询并加入 1,2,51,2,5 33
44 不在且已满,移除最早的 11,加入 44 2,5,42,5,4 44
命中,顺序不变
11 之前已被移除,重新查询;移除最早的 22,加入 11 5,4,15,4,1 55

处理第三个输入编号 11 时没有把它移到末尾,所以后来内存满时,最先移除的仍是 11。最后一次再次遇到它需要重新查询,因此答案是 55。

数据范围

1≤C≤1001\le C\le100,1≤n≤10001\le n\le1000,编号在 11 到 10001000 之间。