#include <bits/stdc++.h>
using namespace std;
/*
特点:先进先出-队列
外存查询条件:队列中无该单词
队列替换条件:队列的容量等于三
*/
int num=0;
queue<int> q;
int M;
set<int> m;
void find(int w)
{
if(*m.find(w)==w&&m.find(w)!=m.end())//集合不空
return;
num+=1;
if(q.size()<M)
{ m.insert(w);
q.push(w);
}
else
{
int t=q.front();
q.pop();
m.erase(t);
m.insert(w);
q.push(w);
}
}
int main()
{
int N;
cin>>M>>N;
int word;
while(N--)
{
cin>>word;
find(word);
}
cout<<num<<endl;
return 0;
}
- STL中容器的使用:find
- 注意条件



京公网安备 11010502036488号