目录

思路

样例解释

AC代码


思路

要做出这道题必须直到除留余数法和平方探测法的原理。

除此之外有两个注意点:

1. 在查找时,如果当前位置上不是要找的数会继续找下去(如果k没超过表长的话),但是如果当前位置上是0,说明表里就是没有这个数,不必再往下找。

2. 在存储时,k的取值范围是[0,Tsize)而在查找时是[0,Tsize],我认为后者也应该是左闭右开,但是要做出这道题就得按照它的规则。

样例解释

表长4不是一个素数,取大于4的第一个素数5作为表长。

有table[5] = {0,0,0,0,0}

对于10:10%5 == 0,table[0]是空的,可以插入,更新table[5] = {10,0,0,0,0}

对于6:6%5 == 1,table[1]是空的,可以插入,更新table[5] = {10,6,0,0,0}

对于4:4%5 == 4,table[4]是空的,可以插入,更新table[5] = {10,6,0,0,4}

对于15:15%5 == 0,table[0]非空,(15+1^2)%5 == 1,table[1]非空,(15+2^2)%5 == 4,table[4]非空,(15+3^2)%5 == 4,(15+4^2)%5 == 1,4已经是表长减一,所以插不进去了。

对于11:11%5 == 1,table[1]非空,(11+1^2)%5 == 2,table[2]是空的。更新table[5] = {10,6,11,0,4}。

最终的存储情况是 {10,6,11,0,4}。

下面开始查询

对于11:11%5 == 1 ,table[1]存储的是6,(11+1^2)%5 == 2,table[2]存储的是11,2次找到。

对于4:4%5 == 4,table[4]存储的是4,1次找到。

对于15:15%5 == 0,没找到,(15+1^2)%5 == 1,没找到,(15+2^2)%5 == 4,没找到,(15+3^2)%5 == 4,没找到,(15+4^2)%5 == 1,没找到,5次。

对于2:2%5 == 2,没找到,(2+1^2)%5 == 3,没找到,注意3号位存储的为空,不必再往下找了。2次。

共计11次。

AC代码

#include<cstdio>
#include<vector>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<set>
#include<stack>
#include<cmath>using namespace std;const int maxn = 1010;bool isPrime(int x){if(x==1)return false;for(int i=2;i<=sqrt(x);i++){if(x%i==0)return false;}return true;
}int main(){ int Tsize,inN,outN;cin>>Tsize>>inN>>outN;if(isPrime(Tsize)==false){while(isPrime(Tsize)==false){Tsize ++;}}int Table[Tsize] = {0}; while(inN--){int x;cin>>x;int k;for(k=0;k<Tsize;k++){int idx = (x+k*k)%Tsize;if(Table[idx]==0){Table[idx] = x;    break;}}if(k==Tsize)printf("%d cannot be inserted.\n",x);}int tt = 0;//total timefor(int i=0;i<outN;i++){int x;cin>>x;for(int k=0;k<=Tsize;k++){tt ++;int idx = (x+k*k)%Tsize;if(Table[idx]==x||Table[idx]==0)break;    }}printf("%.1f",tt*1.0/outN);return 0;
}

1145 Hashing - Average Search Time相关推荐

  1. PAT甲级1145 Hashing - Average Search Time:[C++题解]哈希表、哈希表开放寻址法、二次探测法、求平均查找次数

    文章目录 题目分析 题目链接 题目分析 来源:acwing 本题的分析见另一道PAT的题目:PAT甲级1078 Hashing:[C++题解]哈希表.哈希表开放寻址法.二次探测法链接的题目就是让建立h ...

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

    1145. Hashing - Average Search Time (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 C ...

  3. 平均查找长度(Average Search Length)

    2019-08-27 轻松解决不同关键字序列构成的二叉排序树ASL(平均查找长度)(成功)不同问题

  4. PAT日志 1145

    顽强的小白 1145 Hashing - Average Search Time (25 分) The task of this problem is simple: insert a sequenc ...

  5. PAT甲级题目翻译+答案 AcWing(哈希表)

    1048 Find Coins (25 分) 题意 : 给一序列,要求从中选出两个值使得它们的和恰好等于m,输出第一个值字典序最小且升序的方案 思路 : 看似O(n2)O(n^2)O(n2),其实可以 ...

  6. 【PAT甲级真题整理五】1121~1155

    终于考完了qaq把最后一堆也整理出来了 目录 1121 Damn Single(25)set.map的使用 1122 Hamiltonian Cycle(25)哈密顿回路 1123 Is It a C ...

  7. 2020年9月PAT甲级满分必备刷题技巧

    2020年7月的考试结束了,除了本次的考题更新,短期内不会更新. [7月题目的特点:首次线上考试,没出链表.树相关的模板题,第2到4题背景新颖,大大降低了抄袭历年代码的可能性,可以看作是线上考试的新趋 ...

  8. 刷PAT甲级的各题思路、细节以及遇到的问题记录

    1001 A+B Format (20分) 因为一定会用到字符串,而string非常好用,但是用的时候一定要注意不能越界访问,否则会在运行时出现abort() has been called. 100 ...

  9. 多位点序列分型_细菌多位点序列分型(Multilocus sequence typing,MLST)的原理及分型方法...

    摘 要: 多位点序列分型(MLST)是一种基于核酸序列测定的细菌分型方法,通过PCR扩增多个管家基因内部片段,测定其序列,分析菌株的变异,从而进行分型.MLST被广泛应用于病原菌.环境菌和真核生物中. ...

最新文章

  1. IE和Firefox在JS方面的不兼容及统一方法总结
  2. Warm Up before Exercise
  3. javascript数据结构-介绍
  4. java设计模式3--单例模式(Singleton)
  5. 数据结构--队列Queue--循环顺序队列
  6. 【VSCode - Vetur 插件报错】Cannot find module ‘XXX‘ or its corresponding type declarations.Vetur(2307)
  7. Aspose.Cells Smart markers 基于模板导出Excel
  8. typora插入代码设置_五分钟快速上手神器Typora
  9. 判断release模式_AbstractQueuedSynchronizer共享模式与基于Condition的等待/通知
  10. python安装库pandas_安装python的第三方库 geopandas
  11. GhostCat - AS3工具类库(AS3 library of generic tools)
  12. 【React Native 安卓开发】----(Flexbox布局)【第二篇】
  13. c语言课后题第一章答案,C语言教材课后习题(含答案)
  14. 禁用的灰色文本框、按钮的克星
  15. matlab 图像分割并填充颜色
  16. 学习mescroll的下拉刷新、上拉加载
  17. 基于simulink的模糊PID控制器设计与仿真
  18. 微信小程序-模拟器某些页面空白-引用 VantUI 后,页面空白
  19. Flutter 和 Dart 开发中一些技巧和坑点填坑指南详解
  20. html中首行缩进两个字符

热门文章

  1. 微信小程序 循迹功能制作
  2. HTML超出部分滚动效果 HTML滚动 HTML下拉 附效果图
  3. .Net中如何操作IIS(源代码)
  4. POJ 1236 Network of Schools(tarjan)
  5. (转)如何修改maven的默认jdk版本
  6. 电子文件归档为什么非云不可
  7. 使用Go内置库实现简易httpbin功能
  8. JS学习笔记之call、apply的用法
  9. Docker完整建站详介
  10. python 打印调用栈