基本概念 哈希表(hash table):又称散列表,其基本思路是,设要存储的元素个数是n,设置一个长度为m的连续存储单元,以每个元素的关键字作为自变量,通过哈希函数(h(k))把k映射到一个内存单元,并把该元素存在这个内存单元中,把像这样构造的线性表存储结构称为哈希表。 哈希冲突(hash col ...
分类:
其他好文 时间:
2018-12-17 23:54:23
阅读次数:
315
我们可以维护一个$f[i][j]$代表%$i$意义下得$j$的答案。然后维护就炸了。 先设$x=\sqrt{n}$然后我们发现,当$i x$时我们直接暴力复杂度为$O(x)$,然后我们对$i\leq{x}$的i维护$f[i][j]$,这样询问复杂度$O(1)$,维护复杂度$O(x)$。就可以通过此题 ...
分类:
其他好文 时间:
2018-12-15 19:44:17
阅读次数:
164
1、链地址法 指把所有的冲突关键字存储在一个线性链表中,这个链表由其散列地址唯一标识。 2、开放定址法 开放地址法通常需要有三种方法:线性探测、二次探测、再哈希法。 线性探测 线性探测方法就是线性探测空白单元。当数据通过哈希函数计算应该放在700这个位置,但是700这个位置已经有数据了,那么接下来就 ...
分类:
其他好文 时间:
2018-11-29 16:37:59
阅读次数:
234
想了好久,没想到优秀的解法,结果是个暴力~~大吃一静.jpg~~ 分类讨论,预处理$p\le \sqrt{n}$ 的情况,其他直接暴力,复杂度$O(n \sqrt{n} )$ cpp include include include include using namespace std; int p ...
分类:
其他好文 时间:
2018-11-25 13:21:25
阅读次数:
118
HashMap集合的默认容量为什么是16而不是15? 假设有两个key的hash值为8、9; --容量16-- 8 &(16-1) 1000 & 1111 = 1000 =>8号位置 9 &(16-1) 1001 & 1111 = 1001 =>9号位置 --容量15--hash冲突,碰撞 8 &( ...
分类:
其他好文 时间:
2018-11-17 19:05:33
阅读次数:
207
根号算法 这道题暴力92pts。。。 所以说暴力出奇迹! 其实用什么哈希都是在做幌子,要你求的就是从$k$位置开始,隔$p$个数的数字加起来的和。 我们考虑用一个二维数组存下来,用$ans[p][k]$表示模数为$p$,余数为$k$的答案。 如果把所有的模数都处理,跟暴力是没有差别的,甚至还会更劣。 ...
分类:
其他好文 时间:
2018-11-04 23:01:59
阅读次数:
158
哈希冲突处理实践 实验要求 把自己的学号加21,例如学号为1,把22添加到序列后面,使用链地址法,解决冲突。 编程实现,并测试。 要求计算asl,输出冲突次数。 关键代码及结果截图 "代码链接" ...
分类:
其他好文 时间:
2018-10-22 21:22:29
阅读次数:
118
/*哈希查找 *哈希函数的构造方法常用的有5种。分别是: *数字分析法 *平方取中法 *分段叠加 *伪随机数 *除留取余法 *这里面除留取余法比较常用 *避免哈希冲突常用的方法有4种: *开放定址法(线性探测再散列、二次探测再散列) *链地址法 *再哈希法 *建立公共溢出区 其中,线性探测再散列比较 ...
分类:
编程语言 时间:
2018-10-14 00:29:43
阅读次数:
199
素数在数论中经常被用到。也是数论的基础之一。 人们一直在讨论的问题是,怎样快速找到素数?或者判断一个数是素数? 1.根号n枚举 2.埃氏筛 3.线性筛 4.Miller_Rabin 利用:二次探测,费马小定理。 ...
分类:
其他好文 时间:
2018-09-25 01:30:08
阅读次数:
207
1、开放定址法: Hi=(H(key)+di)% m 其中H(key)为哈希函数,m 为表长,di称为增量序列。根据增量序列的取值方式不同,具体到下面三种散列方法: 线性探测再散列:di=1,2,3,…,m-1 二次探测再散列:di=1^2,-1^2,2^2,-2^2,…,k^2,-k^2 ( k< ...
分类:
其他好文 时间:
2018-09-19 14:47:13
阅读次数:
137