题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=138
这道题需要用到哈希表算法,算是hash的入门题了吧,需要注意的是数组需要开的稍微大点,不懂的手动模拟一下那三个数组的用途就好了...
AC代码:
#include
#include
#include
#define mod 100001
#define maxn 1000005
using namespace std;
int Hash[maxn],Next[maxn],Head[maxn];
int n,m;
int num;
string str;
void Add(int x){
int key = x % mod;
Next[num] = Head[key];
Head[key] = num;
Hash[num] = x;
num++;
}
bool Query(int x){
int key = x % mod;
for(int i=Head[key];i>-1;i=Next[i]){
if(Hash[i] == x){
return true;
}
}
return false;
}
int main()
{
scanf("%d",&n);
num = 0;
memset(Head,-1,sizeof(Head));
while(n--){
cin>>str;
if(str == "ADD"){
scanf("%d",&m);
for(int i=0;i