NYOJ 138 找球号(二) (哈希)

 

题目链接: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

 

你可能感兴趣的:(补题补题补题)