• Acwing 840. 模拟散列表(链表法模拟)


    地址:https://www.acwing.com/problem/content/842/

    解析:

    关于MOD:一般要取质数 ,要离2的整次幂尽可能远,降低冲突概率,这里取1e5+3

    对一个数取模后,如何处理冲突?这里就用到了链表,链表里只有一个头节点,而这里有很多头节点,h[]

    每个结点,对应着一组链表,冲突数就存在里面。

    插入时,按链从头节点的插入模板即可。

    #include<cstdio>
    #include<cstring>
    #include<vector>
    #include<set>
    #include<stack>
    #include<algorithm>
    #include<iostream>
    #include<vector>
    using namespace std;
    typedef long long ll;
    const int maxn=1e5+3,maxn2=31*maxn;
    int h[maxn],ne[maxn],e[maxn],idx;
    void insert(int x)
    {
        int k = (x%maxn+maxn)%maxn;
        e[idx]=x;
        ne[idx]=h[k];
        h[k]=idx++;
    }
    bool query(int x)
    {
        int k = (x%maxn+maxn)%maxn;
        for(int i=h[k];i!=-1;i=ne[i])
            if(e[i]==x)
                return true;
            return false;
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        memset(h,-1,sizeof(h));
        while(n--)
        {
            char op[3];
            int x;
            scanf("%s%d",op,&x);
            if(op[0]=='I')
            {
                insert(x);
            }
            else
            {
                if(query(x))
                    cout<<"Yes"<<endl;
                else
                    cout<<"No"<<endl;
            }
        }
    }
  • 相关阅读:
    map侧连接
    二次排序
    倒排索引
    多表关联
    单表关联
    Shuffle
    Partitioner
    Combiner
    CSS3中的多列
    CSS3动画
  • 原文地址:https://www.cnblogs.com/liyexin/p/13955668.html
Copyright © 2020-2023  润新知