1145 Hashing - Average Search Time (25 分)难度: 一般 / 知识点: 哈希表平均查找时间

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1145 Hashing - Average Search Time (25 分)难度: 一般 / 知识点: 哈希表平均查找时间相关的知识,希望对你有一定的参考价值。


https://pintia.cn/problem-sets/994805342720868352/problems/994805343236767744

#include<bits/stdc++.h>
using namespace std;
const int N=1e7+10;
const int null=0x3f3f3f3f;
int hush[N],n,m,s;
int insert(int x)

    for(int i=0;i<s;i++)
    
        int pos=(x+i*i)%s;
        if(hush[pos]==null)//找到位置了
        
            hush[pos]=x;
            return pos;
        
    
    return -1;

int find(int x)

    int cnt=0;
    for(int i=0;i<s;i++)
    
        int pos=(x+i*i)%s;
        cnt++;
        if(hush[pos]==x||hush[pos]==null)//找到位置了,或者根本没插入
        
            return cnt;
        
    
    return s+1;

bool check(int x)

    if(x==1) return true;
    for(int i=2;i<=x/i;i++) if(x%i==0) return true;
    return false;

int main(void)

    memset(hush,0x3f,sizeof hush);
    cin>>s>>n>>m;
    while(check(s)) s++;//求最小的质数
    for(int i=1;i<=n;i++)
    
        int x; cin>>x;
        int ans=insert(x);
        if(ans==-1) printf("%d cannot be inserted.\\n",x);
    
    int sum=0;
    for(int i=0;i<m;i++)
    
        int x; cin>>x;
        sum+=find(x);
    
    printf("%.1lf",sum*1.0/m);
    return 0;

以上是关于1145 Hashing - Average Search Time (25 分)难度: 一般 / 知识点: 哈希表平均查找时间的主要内容,如果未能解决你的问题,请参考以下文章

1145 Hashing - Average Search Time

1145 Hashing - Average Search Time

1145 Hashing - Average Search Time (25 分)难度: 一般 / 知识点: 哈希表平均查找时间

PAT 甲级 1145 Hashing - Average Search Time (25 分)(读不懂题,也没听说过平方探测法解决哈希冲突。。。感觉题目也有点问题)

A 1145 Hashing - Average Search Time (25分)([哈希映射,哈希表,平?方探测法)

1078 Hashing