拉链法:
#include <bits/stdc++.h>
#define pii pair<int,int>
#define ll long long
#define cl(x) memset(x,0,sizeof(x))
const int N= 1e5 + 3 ;
const int mod= 1e7 + 9 ;
const int maxn= 0x3f3f3f3f ;
const int minn= 0xc0c0c0c0 ;
const int inf= 99999999 ;
using namespace std;
int h[ N] , ne[ N] , num[ N] ;
int len= 0 ;
void add ( int x)
{
int k= ( x% N+ N) % N;
num[ len] = x;
ne[ len] = h[ k] ;
h[ k] = len;
len++ ;
}
int find ( int x)
{
int i, k= ( x% N+ N) % N;
for ( i= h[ k] ; i!= - 1 ; i= ne[ i] )
if ( num[ i] == x)
return 1 ;
return 0 ;
}
int main ( )
{
ios:: sync_with_stdio ( false ) ;
cin. tie ( 0 ) ; cout. tie ( 0 ) ;
int n;
memset ( h, - 1 , sizeof ( h) ) ;
cin>> n;
while ( n-- )
{
char c;
int a;
cin>> c>> a;
if ( c== 'I' )
add ( a) ;
else
if ( find ( a) )
cout<< "Yes" << endl;
else
cout<< "No" << endl;
}
return 0 ;
}
开放地址法:
#include <bits/stdc++.h>
#define pii pair<int,int>
#define ll long long
#define cl(x) memset(x,0,sizeof(x))
const int N= 1e7 + 3 ;
const int mod= 1e7 + 9 ;
const int maxn= 0x3f3f3f3f ;
const int minn= 0xc0c0c0c0 ;
const int inf= 99999999 ;
using namespace std;
int h[ N] ;
int find ( int x)
{
int k= ( x% N+ N) % N;
while ( h[ k] != maxn && h[ k] != x)
{
k++ ;
if ( k== N)
k= 0 ;
}
return k;
}
int main ( )
{
ios:: sync_with_stdio ( false ) ;
cin. tie ( 0 ) ; cout. tie ( 0 ) ;
int n;
memset ( h, maxn, sizeof ( h) ) ;
cin>> n;
while ( n-- )
{
char c;
int a;
cin>> c>> a;
int k= find ( a) ;
if ( c== 'I' )
h[ k] = a;
else
if ( h[ k] != maxn)
cout<< "Yes" << endl;
else
cout<< "No" << endl;
}
return 0 ;
}
STLmap:
#include <bits/stdc++.h>
#define pii pair<int,int>
#define ll long long
#define cl(x) memset(x,0,sizeof(x))
const int N= 1e6 + 10 ;
const int mod= 1e7 + 9 ;
const int maxn= 0x3f3f3f3f ;
const int minn= 0xc0c0c0c0 ;
const int inf= 99999999 ;
using namespace std;
map< int , int > m;
int main ( )
{
ios:: sync_with_stdio ( false ) ;
cin. tie ( 0 ) ; cout. tie ( 0 ) ;
int n;
cin>> n;
while ( n-- )
{
char c;
int a;
cin>> c>> a;
if ( c== 'I' )
m[ a] = 1 ;
else
if ( m[ a] )
cout<< "Yes" << endl;
else
cout<< "No" << endl;
}
return 0 ;
}