题解
机器翻译
1 条题解
-
0
#include <iostream> #include <queue> #include <set> using namespace std; int main() { int M, N; cin >> M >> N; queue<int> memory; // 存储单词的进入顺序(先进先出) set<int> in_memory; // 快速判断单词是否在内存中 int count = 0; // 查词典次数 for (int i = 0; i < N; i++) { int word; cin >> word; // 判断是否已在内存中 if (in_memory.find(word) != in_memory.end()) { continue; // 已存在,无需查词典 } // 未在内存中,必须查词典 count++; // 内存未满:直接加入 if (memory.size() < M) { memory.push(word); in_memory.insert(word); } else { // 内存已满:移除最早进入的单词(队首) int oldest = memory.front(); memory.pop(); in_memory.erase(oldest); // 插入新单词 memory.push(word); in_memory.insert(word); } } cout << count << endl; return 0; }
- 1