模拟散列表开放寻址法

#include <iostream>
#include <cstring>
using namespace std;

const int N=200003,null=0x3f3f3f3f;

int h[N];


bool find1(int x){
    int k=(x%N+N)%N;
    while(h[k]!=null && h[k]!=x){
        k++;
        if(k==N) k=0;
    }
    return k;
}

int main()
{
    int n;
    scanf("%d",&n);

    memset(h,0x3f,sizeof h);

    while(n--){
        char op[2];
        int x;
        scanf("%s%d",op,&x);

        int k=find1(x);
        if(*op == 'I')h[k]=x;
        else{
            if(h[k]!=null) puts("Yes");
            else puts("No");
        }

    }
    return 0;
}

上一篇:华电(华北电力大学)C语言题库全集~C语言入门


下一篇:AtCoder Beginner Contest 234 题解