zoukankan      html  css  js  c++  java
  • 1145 Hashing

    如果查找了 TSize 次,每次查找的位置上均有数,但都不等于要查找的数,则认为查找时间是 TSize+1。

    const int N=1e4+10;
    int Tsize,n,m;
    int h[N];
    int cnt;
    
    bool isprime(int x)
    {
        if(x < 2) return false;
        for(int i=2;i*i<=x;i++)
            if(x % i == 0)
                return false;
        return true;
    }
    
    int find(int x)
    {
        int k=x%Tsize;
        for(int i=0;i<Tsize;i++)
        {
            int t=(k+i*i)%Tsize;
            cnt++;
            if(!h[t] || h[t] == x) return t;
        }
        return -1;
    }
    
    int main()
    {
        cin>>Tsize>>n>>m;
    
        while(!isprime(Tsize)) Tsize++;
    
        for(int i=0;i<n;i++)
        {
            int x;
            cin>>x;
            int k=find(x);
            if(k == -1) cout<<x<<" cannot be inserted."<<endl;
            else h[k]=x;
        }
    
        double sum=0;
        for(int i=0;i<m;i++)
        {
            int x;
            cin>>x;
            cnt=0;
            int k=find(x);
            if(k == -1) sum+=Tsize+1;
            else sum+=cnt;
        }
    
        printf("%.1f
    ",sum/m);
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    正则表达式收藏
    c#mvc实现登录
    jQuery获取URL中的参数
    TortoiseSVN新人使用指南
    CheckBox获取一组及全选
    day45
    day44
    day43
    day43
    day42
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14520029.html
Copyright © 2011-2022 走看看