(1)冲突处理方法为:顺次循环后移到下一个位置,寻找空位插入。(2)BKDE 字符串哈希unsigned int hash_BKDE(char *str){/* 初始种子seed 可取31 131 1313 13131 131313 etc.. */unsigned int seed = 131;u ...
分类:
其他好文 时间:
2016-06-01 22:54:55
阅读次数:
255
看得《Hash在信息学竞赛中的一类应用》中的例题3,这道题很类似啊,只不过没有删点和区间翻转。 用Splay维护字符串哈希,加点改点什么的就不用说了,查询时二分答案,这样时间复杂度是$O(mlog^2 n)$的 论文的例题3中删点很简单,和插点一样,不用说了,区间翻转只要打一个翻转标记,维护正序ha ...
分类:
Web程序 时间:
2016-05-21 23:10:57
阅读次数:
273
题意:求给定字符矩阵中相同正方形矩阵的最大边长和这两个相同正方形的位置 第一次写字符串哈希,选两个不同的模数进行二维字符串哈希。 本来应该取模判断相等后再暴力扫矩阵来判断,但是我看到《Hash在信息学竞赛中的一类应用》中这么写道: 于是我还会再次判重吗?肯定不会!!! 于是这样写完后就调啊调,调出几 ...
分类:
其他好文 时间:
2016-05-21 17:34:11
阅读次数:
119
因为BZOJ上“ 数据文件太过巨大,仅提供前三组数据测试.”所以我考场上写的60分的点分治交上去也A了。 我的这个点分治的时间复杂度是$O(Tnmlogn)$的,听题解时没听懂$O(Tnlogn)$的标算,还有听说标算要用到字符串哈希,然而我并不会,所以先留个坑,贴上自己的60分代码,满分做法等我学 ...
分类:
其他好文 时间:
2016-05-21 11:37:18
阅读次数:
485
题意:意思是有若干个飞行员,需要在扫帚上练习飞行,每个飞行员具有不同的等级,且等级高的飞行员可以当等级低的飞行员的老师,且每个飞行员至多有且只有一个老师和学生。具有老师和学生关系的飞行员可以在同一把扫帚上练习,并且这个性质具有传递性。即比如有A,B,C,D,E五个飞行员,且等级是A>B>C>D>E, ...
分类:
其他好文 时间:
2016-05-15 00:28:24
阅读次数:
143
很简单的题,主要是要用字符串哈希,把字符串处理成整数。接下来可以继续用hash,也可以像我一样用个map就搞定了。 ...
分类:
其他好文 时间:
2016-05-14 23:09:50
阅读次数:
364
位图是用一个btye位来表示一个数据是否存在,再通过哈希函数确定一个数据所在的位置,这样处理会使当仅需要判断一个数据在不在的时候大大的提高效率,缩小内存的使用,如一个数据为int型,而一个int型的数据构成的位图能表示32个数据的存在状态。代码实现如下:Bitmap.h:#inclu..
分类:
其他好文 时间:
2016-05-14 01:15:41
阅读次数:
153
部分转载自here
常用HASH算法 代码 & 比较
常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。
常用字符串哈希函数有BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHas...
分类:
其他好文 时间:
2016-05-13 02:45:56
阅读次数:
195
我用字符串哈希(bkdhash)写的,C++代码如下:
#include
using namespace std;
typedef unsigned long long ull;
char arr[1000001];
ull nbase[1000001];
ull Hash[1000001];
int base = 31;
void main()
{
nbase[0] = 1;
for...
分类:
其他好文 时间:
2016-05-12 22:36:17
阅读次数:
553
从第一个字符串中删除在第二个字符串中出现的所有字符
“We are students” “aeiou” “W r studnts” 我们可以设置两个指针pfast和pslow,初始化时两个都指向字符串中的第一个字符,pfast碰到一个需要删除的字符直接跳过;pfast如果碰到不需要删除的字符,就把该字符复制给pslow,同时pfast后移(继续需找),pslow(指向下一个位置)。这样整个算...
分类:
其他好文 时间:
2016-05-12 12:05:02
阅读次数:
142