AcWing 840. 模拟散列表
原题链接
简单
作者:
cristiajay
,
2021-03-03 14:17:04
,
所有人可见
,
阅读 222
map stl
#include<iostream>
#include<cstring>
using namespace std;
const int N = 100003;
int e[N],ne[N],idx;
int h[N];
void insert(int x){
int k = (x%N + N)%N;
e[idx] = x ;
ne[idx] = h[k];
h[k] = idx++;
}
bool find(int x){
int k = (x%N + N)%N;
/*if(h[k] == -1)
return false;
else{
int r = h[k];
while(ne[r]!=-1){
if(e[r]!=x){
r = ne[r];
}else{
return true;
}
}
}*/
for(int i=h[k];i!=-1;i=ne[i])
if(e[i] == x)
return true;
return false;
}
int main(){
int n,m;
char op[2];
scanf("%d",&n);
memset(h,-1,sizeof (h) );
while( n-- ){
scanf("%s%d",op,&m);
if(*op == 'I') insert(m);
else if(*op == 'Q'){
if(find(m))
//printf("Yes");
puts("Yes");
else
//printf("No");
puts("No");
}
}
return 0;
}