【PAT甲级 - C++题解】1145 Hashing - Average Search Time
admin
2024-04-11 04:17:04
0

✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📚专栏地址:PAT题解集合
📝原题地址:题目详情 - 1145 Hashing - Average Search Time (pintia.cn)
🔑中文翻译:期终成绩
📣专栏定位:为想考甲级PAT的小伙伴整理常考算法题解,祝大家都能取得满分!
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

1145 Hashing - Average Search Time

1638. 哈希 - 平均查找时间 - AcWing题库

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 H(key)=key%TSize 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 104. 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 105.

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

题意

这道题给定一个表的大小以及元素的个数,我们需要利用二次探测法来计算每个元素在表中的位置,如果无法插入则输出 %d cannot be inserted. 。然后再对给定的数值进行查询,并输出查找的平均时间。需要注意的是,如果无法找到一个数值,则该查找的时间为哈希表长 s1s+1

另外,表的大小必须为质数,如果给定的不是质数,则需要求出大于该值的最小质数当做表长。

关于什么是二次探测法,我在之前的 C++ 实现查找的博客中有详细讲解,传送门如下:

(239条消息) C++实现查找 - 顺序、二分和哈希查找_Pandaconda的博客-CSDN博客_顺序查找c++

思路

具体思路如下:

  1. 先确保哈希表长为质数,如果给定的表长不为质数,则找到大于给定表长的最小质数。
  2. 插入给定的数值,如果无法插入则输出对应语句。
  3. 查询给定的数值,最后输出平均查找时间。

代码

#include
using namespace std;const int N = 10010;
int s, n, m;
int h[N];//判断x是否为质数
bool is_prime(int x)
{if (x == 1)    return false;for (int i = 2; i * i <= x; i++)if (x % i == 0)return false;return true;
}//查找位置的同时计算查询的次数
int find(int x, int& cnt)
{int t = x % s;cnt = 1;for (int i = 0; i < s; i++, cnt++){int k = (t + i * i) % s;if (!h[k] || h[k] == x)   return k;}return -1;
}int main()
{cin >> s >> n >> m;//确保哈希表长度为质数while (!is_prime(s))  s++;//插入元素for (int i = 0; i < n; i++){int x, count;cin >> x;int t = find(x, count);if (t == -1)   printf("%d cannot be inserted.\n", x);else    h[t] = x;}//查询元素int cnt = 0;for (int i = 0; i < m; i++){int x, count;cin >> x;find(x, count);cnt += count;}//输出平均查找时间printf("%.1lf\n", (double)cnt / m);return 0;
}

相关内容

热门资讯

夯实规范根基 推动慈善信托高质... 中国信托业协会慈善信托专委会委员 中诚信托有限责任公司党委副书记、总裁 王会妙 慈善信托是我国慈善事...
霍华德·马克斯:AI改变了我的... 传奇投资人霍华德·马克斯(Howard Marks)说,AI让他改变了判断——但他同时承认,没有人知...
邱淑贞丈夫花费4200万购入半... 沈嘉伟又出手了,4200万港元,中半山地利根德阁3座中层B室,实用面积1602平方呎,三房连一套房。...
Meta拟聘请亚马逊云科技高管... 7月17日消息,据财联社获悉,亚马逊云科技(AWS)资深高管戴夫·布朗即将入职Meta。 据知情人士...
一场年中大促后,美国兴趣电商走... 封面图片由AI生成 海外“618”,兴趣电商在美国的一次大考。 对关注美区的跨境卖家来说,年中大促季...
原创 半... 半年回撤近三成,金价大幅回调,四大核心信号辨别本轮行情属性 很多普通投资者最近都十分困惑,年初还一路...
原创 中... 近期全球黄金市场出现反常一幕:国际金价今年早些时候冲高后已下跌近 30%,但中国市场却掀起了一股购金...
原创 从... 顶着“人类太空希望”光环的SpaceX,连续三个交易日股价下挫,跌破 IPO 发行价。过去的Spac...
【数智化人物展】衡石科技创始人... 刘诚忠 “【提示】2026第六届数智化颁奖典礼将于8月5日在北京举行颁奖点击可报名参加颁奖典礼丨此次...
泽连斯基一个拧瓶盖动作,违反了... 在今天的欧洲,有什么行为能让你瞬间成为“环保罪人”? 答案荒诞得像个段子:你只要把塑料瓶盖完完整整地...
阿里巴巴香港创业者基金何定康:... 【导读】NextGen Partners 合伙人何定康 (Kenny Ho) 认为,全球投资者已形成...
早睡早起和晚睡晚起,到底谁更健... 很多人都有过这样的自我安慰:虽然我凌晨两点才睡,但第二天睡到上午十点,照样睡满8小时,应该不算熬夜。...
LV老板被责令补税,高达1.7... 7月17日消息,据中新经纬,近日,在一场持续多年的法律诉讼后,法国首富、LVMH掌门人贝尔纳·阿尔诺...
原创 黄... 来源 | 《财经》新媒体 文丨《财经》新媒体研究员 蒋金丽 编辑丨蒋诗舟 经历了短暂反弹后,国际金价...
Atlas关停,AI浏览器没有... 根据OpenAI官方文档,Atlas将于2026年8月9日停止运行。用户需要提前迁移想保留的数据,包...
心理咨询师2026年小红书导流... 「小红书公转私」是指在小红书平台上,通过合规的内容运营和互动策略,将公域流量用户引导至微信等私域渠道...
小鹏就空气弹簧故障致歉,小米汽... 今天是 7 月 17 日 农历六月初四 杭州怎么就 38 度了 这个天气 一出门就感觉 正在被低温慢...
光模块龙头中际旭创通过港交所聆... 7月17日,港交所披露文件显示,全球高速光模块龙头中际旭创顺利通过主板上市聆讯,距离完成A+H两地上...
2026年A股最大IPO来了,... 7月16日,中国存储芯片龙头长鑫科技正式开启网上申购。这家存储芯片龙头企业,即将创下今年A股最大IP...
西部利得基金旗下一基金成立15... 深圳商报·读创客户端记者 詹钰叶 西部利得基金旗下最“资深”产品西部利得策略优选近来引起投资者关注—...