EOJ_1015_查字典
作者:互联网
#include <bits/stdc++.h>
#define MAX 20004
using namespace std;
//入队列和出队是队列
//查询操作可以加一个map
int q[MAX]={0};
int head=0;
int tail=0;
map<int, bool> table;
int main()
{
int m,n;
cin>>m>>n;
int res=0;
for(int i=0;i<n;i++){
int tmp;
cin>>tmp;
if(!table.count(tmp)){
//cout<<"tmp*"<<tmp<<endl;
if((tail-head)>=m){
table.erase(q[head]);
//cout<<q[head]<<endl;
//cout<<table[q[head]]<<endl;
//有这一行则res=4 而不是res=5,以为table[q[head]]会在map中创建一个新key
head++;
}
table.insert(make_pair(tmp,true));
q[tail]=tmp;
tail++;
res++;
//cout<<tmp<<endl;
}
}
cout<<res<<endl;
return 0;
}```
标签:tmp,map,head,cout,int,EOJ,查字典,1015,table 来源: https://blog.csdn.net/xyc859666356/article/details/120457828