#include <iostream> #include <queue> #include <unordered_set> #include <algorithm> using namespace std; int main() { int m = 0;//缓存容量 int n = 0;//文章单词数 int count = 0;//记录出现多少次miss的情况 int num = 0;//输入的单词 unordered_set<int> cache;//哈希集合 queue<int> q; cin >> m >> n; for(int i = 0; i < n; i++) { cin >> num; if(cache.find(num) == cache.end())//未找到元素,即元素不在队列中 { if(q.size() >= m)//队列中的单词数量大于等于缓存容量时 { int oldest = q.front(); q.pop(); cache.erase(oldest);//移除最旧的单词 } q.push(num); cache.insert(num);//加入缓存 count++; } } cout << count << endl; return 0; } // 64 位输出请用 printf("%lld")