【题解】【AcWing】1564. 哈希
1564. 哈希
原题传送:AcWing 1564. 哈希
将一个由若干个不同正整数构成的整数序列插入到一个哈希表中,然后输出输入数字的位置。
哈希函数定义为 H(key)=key%TSizeH(key)=key\%TSizeH(key)=key%TSize ,其中 TSizeTSizeTSize 是哈希表的最大大小。
利用只具有正增量的二次探测法来解决冲突。
注意,哈希表的大小最好是素数,如果用户给出的最大大小不是素数,则必须将表大小重新定义为大于用户给出的大小的最小素数。
输入格式
第一行包含两个整数 MSizeMSizeMSize 和 NNN ,分别表示用户定义的表的大小以及输入数字的数量。
第二行包含 NNN 个不同的正整数,数字之间用空格隔开。
输出格式
在一行中,输出每个输入数字的相应位置(索引从 000 开始),数字之间用空格隔开,行尾不得有多余空格。
如果无法插入某个数字,则输出 -
。
数据范围
1≤MSize≤1041 \le MSize \le 10^41≤MSize≤104 ,
1≤N≤MSize1 \le N \le MSize1≤N≤MSize ,
输入数字均在 [1,105][1,10^5][1,105] 范围内。
输入样例:
4 4
10 6 4 15
输出样例:
0 1 4 -
思路:
先找到哈希表大小,然后开放寻址法得到对应下标的数字。
题解:
#include<bits/stdc++.h>using namespace std;const int N = 10010;int msize, n;
int h[N];int prime(int n)
{int i;for(i = 2; i <= sqrt(n); i++)if(n % i == 0)break;if(n <= 1)return 0;else if(i > sqrt(n))return 1;elsereturn 0;
}int find(int x)
{int t = x % msize;for(int k = 0; k < msize; k++){int i = (t + k * k) % msize;if(!h[i])return i;}return -1;
}int main()
{ scanf("%d%d", &msize, &n);while(!prime(msize))msize++;for(int i = 0; i < n; i++){int x;scanf("%d", &x);int t = find(x);if(i)printf(" ");if(t == -1)printf("-");else{h[t] = x;printf("%d", t);}}return 0;
}
【题解】【AcWing】1564. 哈希相关推荐
- AcWing:哈希表
哈希表理论基础 哈希表有两大要点: 存储结构 开放寻址法 拉链法 字符串哈希 哈希表的最主要作用是将一个比较大的范围(如10^9)映射到一个比较小的空间(0 ~ N,其中N一般为10^5 - 10^6 ...
- acwing基础课——哈希表
由数据范围反推算法复杂度以及算法内容 - AcWing 常用代码模板2--数据结构 - AcWing 基本思想: 哈希表:也叫做散列表.是根据关键字和值(Key-Value)直接进行访问的数据结构.也 ...
- PAT甲级1042 Shuffling Machine:[C++题解]模拟、哈希表、洗牌机
文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:序列置换. 这里用到函数memcpy()用于数组复制,用法memcpy(dest, src, sizeof dest); 把src数组 ...
- PAT甲级1041 Be Unique :[C++题解]模拟、哈希表
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:统计次数,按序遍历,输出第一个出现次数为1的号码. ac代码 #include<bits/stdc++.h> using ...
- PAT甲级题目翻译+答案 AcWing(哈希表)
1048 Find Coins (25 分) 题意 : 给一序列,要求从中选出两个值使得它们的和恰好等于m,输出第一个值字典序最小且升序的方案 思路 : 看似O(n2)O(n^2)O(n2),其实可以 ...
- PAT甲级1039 Course List for Student :[C++题解]排序、哈希表
文章目录 题目分析 题目链接 题目分析 此题以为会卡时间,特意使用scanf来读,结果本题不是这里卡时间.而是看查询效率高不高. 考察hash 表,然后vector排个序即可. ac代码 #inclu ...
- 《剑指offer》第1~11题:刷题week1[C++题解]
文章目录 1. 找出数组中重复的数字 思路一:排序 思路二:hash表 思路三:原地交换 2. 不修改数组找出重复的数字 思路:抽屉原理+二分 3. 二维数组中的查找 思路:思维题(选取右上角的值) ...
- Acwing -- 单调队列优化的DP问题
文章目录 引入 acwing154 滑动窗口 应用 135 最大子序和 1088.旅行问题 AcWing 1087. 修剪草坪28 AcWing 1089. 烽火传递 AcWing 1090. 绿色通 ...
- LeetCode 214. 最短回文串(字符串哈希)
文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串. 找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aace ...
- AcWing 1113. 红与黑【《信息学奥赛一本通》】【DFS】【BFS】【Flood Fill】
AcWing 1113. 红与黑 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 解法一(BFS): 解法二(DFS): 四.其它题解 一.题目链接 AcWing 1113. ...
最新文章
- 后门构建工具Backdoor Factory
- hdoj-2039-三角形
- python中json.load()、json.loads()、json.dump()、json.dumps()的区别
- DecimalFormat 保留精度或者是 小数 比较好用
- linkedHashMap源码解析(JDK1.8)
- php create()方法,ThinkPHP中create()方法自动验证实例
- SSIS 包部署错误 0xC0010014
- QFileInfoList
- 334个地级市名单_2016年最新中国地级市名单
- 计算机组装硬件配置清单,组装电脑配置清单
- linux怎样编译安装pidgin,Ubuntu 10.04编译安装Pidgin-2.7.3整个过程
- windows10自带屏保设置
- Webx系列之文件上传
- 1.2 webstorm设置pug自动编译
- 计算机教 学计划,计算机教学计划4篇
- BP神经网络原理简单介绍以及公式推导(矩阵形式和分量形式)
- 《微信思维》摘录(一)
- 良心安利吸顶灯ies光域网素材网站
- axios拦截设置和错误处理
- ChatGPT之父Sam Altman28岁从YC创始人保罗·格雷厄姆手中继任总裁,37岁震惊全球