Source:

PAT A1145 Hashing - Average Search Time (25 分)

Description:

The task of this problem is simple: insert a sequence of distinct positive integers into a hash table first. Then try to find another sequence of integer keys from the table and output the average search time (the number of comparisons made to find whether or not the key is in the table). The hash function is defined to be ( where TSize is the maximum size of the hash table. Quadratic probing (with positive increments only) is used to solve the collisions.

Note that the table size is better to be prime. If the maximum size given by the user is not prime, you must re-define the table size to be the smallest prime number which is larger than the size given by the user.

Input Specification:

Each input file contains one test case. For each case, the first line contains 3 positive numbers: MSize, N, and M, which are the user-defined table size, the number of input numbers, and the number of keys to be found, respectively. All the three numbers are no more than 1. Then N distinct positive integers are given in the next line, followed by M positive integer keys in the next line. All the numbers in a line are separated by a space and are no more than 1.

Output Specification:

For each test case, in case it is impossible to insert some number, print in a line X cannot be inserted.where X is the input number. Finally print in a line the average search time for all the M keys, accurate up to 1 decimal place.

Sample Input:

4 5 4
10 6 4 15 11
11 4 15 2

Sample Output:

15 cannot be inserted.
2.8

Keys:

  • 散列(Hash)

Attention:

  • 二次探测法K的范围,0<= k <= Size

Code:

 /*
Data: 2019-08-05 20:14:25
Problem: PAT_A1145#Hashing - Average Search Time
AC: 32:04 题目大意:
哈希表中插入一些列正整数,再查找一系列正整数并计算平均查找时间;
表长为不小于给定表长的最小素数,冲突处理采用二次探测法(只取正K) 输入:
第一行给出,表长Size,待插入总数N,待查找总数M,均<=1e4;
第二行给出,N个待插入元素<=1e5
第三行给出,M个待查找元素<=1e5
输出:
若N个数中,有无法插入哈希表的,输出之;
计算M个数的平均查找时间,保留一位小数;
*/
#include<cstdio>
const int M=1e5+;
int ht[M]={},mp[M]={}; bool IsPrime(int x)
{
if(x== || x==)
return false;
for(int i=; i*i<=x; i++)
if(x%i==)
return false;
return true;
} int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("Test.txt", "r", stdin);
#endif // ONLINE_JUDGE int T,n,m,x,sum=;
scanf("%d%d%d", &T,&n,&m);
while(!IsPrime(T))
T++;
for(int i=; i<n; i++)
{
scanf("%d", &x);
for(int j=; j<=T; j++)
{
if(ht[(x+j*j)%T]==)
{
ht[(x+j*j)%T]=x;
mp[x]=j+;
break;
}
}
if(mp[x]==)
{
printf("%d cannot be inserted.\n",x);
mp[x]=T+;
}
}
for(int i=; i<m; i++)
{
scanf("%d", &x);
if(mp[x]==)
{
for(int j=; j<=T; j++){
if(ht[(x+j*j)%T]==){
sum += (j+);
break;
}
}
}
else
sum += mp[x];
}
printf("%.1f", 1.0*sum/m); return ;
}

PAT_A1145#Hashing - Average Search Time的更多相关文章

  1. PAT 1145 Hashing - Average Search Time [hash][难]

    1145 Hashing - Average Search Time (25 分) The task of this problem is simple: insert a sequence of d ...

  2. [PAT] 1143 Lowest Common Ancestor(30 分)1145 Hashing - Average Search Time(25 分)

    1145 Hashing - Average Search Time(25 分)The task of this problem is simple: insert a sequence of dis ...

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

    1145 Hashing - Average Search Time (25 分)   The task of this problem is simple: insert a sequence of ...

  4. PAT-1145(Hashing - Average Search Time)哈希表+二次探测解决冲突

    Hashing - Average Search Time PAT-1145 需要注意本题的table的容量设置 二次探测,只考虑正增量 这里计算平均查找长度的方法和书本中的不同 #include&l ...

  5. 1145. Hashing - Average Search Time

      The task of this problem is simple: insert a sequence of distinct positive integers into a hash ta ...

  6. PAT A1145 Hashing - Average Search Time (25 分)——hash 散列的平方探查法

    The task of this problem is simple: insert a sequence of distinct positive integers into a hash tabl ...

  7. PAT 甲级 1145 Hashing - Average Search Time

    https://pintia.cn/problem-sets/994805342720868352/problems/994805343236767744 The task of this probl ...

  8. PAT 1145 Hashing - Average Search Time

    The task of this problem is simple: insert a sequence of distinct positive integers into a hash tabl ...

  9. 1145. Hashing - Average Search Time (25)

    The task of this problem is simple: insert a sequence of distinct positive integers into a hash tabl ...

随机推荐

  1. SSM(spring mvc+spring+mybatis)学习路径——1-2、spring事务管理

    目录 1-2 Spring事务管理 概念介绍 事务回顾 事务的API介绍 Spring 事务管理 转账案例 编程式事务管理 声明式事务管理 使用XML配置声明式事务 基于tx/aop 使用注解配置声明 ...

  2. Android studio图片ERROR: 9-patch image xx .9.png malformed

    Android studio 图片错误  9-patch image error in Android ERROR: 9-patch image xx .9.png malformed 1) 异常: ...

  3. android获取当前软件版本号号和版本号名称

    <span style="font-size:18px;">/** * 获取本地软件版本号 */ public static int getLocalVersion(C ...

  4. Python图像处理库PIL中图像格式转换(一)

    在数字图像处理中,针对不同的图像格式有其特定的处理算法. 所以,在做图像处理之前,我们须要考虑清楚自己要基于哪种格式的图像进行算法设计及事实上现.本文基于这个需求.使用python中的图像处理库PIL ...

  5. CF 557A(Ilya and Diplomas-贪心)

    A. Ilya and Diplomas time limit per test 1 second memory limit per test 256 megabytes input standard ...

  6. linux中两个缓冲区

    不同于Windows,Linux系统里存在两个剪切板:一个叫做选择缓冲区(X11 selection buffer),另一个才是剪切板(clipboard). 01)选择缓冲区(缓冲内容在其他位置可用 ...

  7. C++_class_powerpoint_1.2

    用英文编写(复制黏贴)果然比较吃力啊,果然还是要写中文. Expressions and Statements Operator summary Scope resolution   class::m ...

  8. html5 窗口之间的通信

    一般窗口通信分为三种: iframe嵌套:多个iframe之间通信. 父页面操作子页面元素:oFrame.contentWindow.document.body. 父页面调用子页面方法:oFrame. ...

  9. python-day4 运算符,if判断, for循环

    1.运算符 算术运算符 +   -    *    /    % 赋值运算符 =   +=  -= 比较运算符 ==    <   <=    >    >=    != 逻辑 ...

  10. HDU3533 Escape

    题目: The students of the HEU are maneuvering for their military training. The red army and the blue a ...