#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
- 注意条件