2011年8月23日

HDU 2522 1/n Hash

摘要: 哎~~简直是坑爹的setbuf(stdout,NULL),不理解这个函数的机理,结果为杭电贡献了N次的time limit exceed,其实这道题目还是非常简单的,了解了除法的机制以后,就很好做了,注意余数相同时,循环节开始View Code 1 /* 2 * Author:lonelycatcher 3 * problem:hdu 2522 4 * Type:Hash 5 */ 6 #include <iostream> 7 #include<stdio.h> 8 #include<string.h> 9 #include<cstdlib>1 阅读全文

posted @ 2011-08-23 21:10 lonelycatcher 阅读(399) 评论(0) 推荐(0) 编辑

HDU 1800 Hash

摘要: 这道题简化一些就是求输入相等的字符串的最大值,即最多有多少字符串相等,用map做的话相当简单,但是会超时,可能是用cin的原因,这里将字符串Hash到一个整数,然后就很简单了,注意这里有些地方需要注意的,即字符串前导零的处理!!View Code 1 /* 2 * Author:lonelycatcher 3 * problem:hdu 1800 4 * Type:字符串的Hash 5 */ 6 #include <iostream> 7 #include<limits.h> 8 #include<string.h> 9 #include<string 阅读全文

posted @ 2011-08-23 18:43 lonelycatcher 阅读(801) 评论(0) 推荐(1) 编辑

字符串Hash函数的比较

摘要: 常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。常用字符串哈希函数有 BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等等。对于以上几种哈希函数,我对其进行了一个小小的评测。Hash函数数据1数据2数据3数据4数据1得分数据2得分数据3得分数据4得分平均分BKDRHash20477448196.5510090.9582.0592.64APHash2347 阅读全文

posted @ 2011-08-23 15:17 lonelycatcher 阅读(1409) 评论(0) 推荐(0) 编辑

HDU 1496 equation 非常好的Hash

摘要: 这道题目如果用一个四重循环的话应该会超时,可以将方程转换为一个等式,a*x1*x1+b*x2*x2=-(c*x3*x3+d*x4*x4);但是如何寻找适当x1,x2,x3,x4是这个等式成立呢,用Hash是一个不错的选择,将a*x1*x1+b*x2*x2映射到一个很大的数组(经过计算1000000即可),然后再对二重循环c*x3*x3+d*x4*x4的结果与相对应的Hash值相比较即可View Code 1 /* 2 * Author:lonelycatcher 3 * problem:hdu 1496 4 * Type:Hash 5 */ 6 #include <iostream> 阅读全文

posted @ 2011-08-23 11:43 lonelycatcher 阅读(401) 评论(0) 推荐(0) 编辑

导航