随笔分类 - HASH
HDU 4821 字符串hash
摘要:题目大意:希望找到连续的长为m*l的子串,使得m个l长的子串每一个都不一样,问能找到多少个这样的子串简单的字符串hash,提前预处理出每一个长度为l的字符串的hash值 1 #include 2 #include 3 #include 4 #include 5 #include 6 #in...
阅读全文
HDU 3973 线段树+字符串hash
摘要:题目大意:不断修改字符串中的字母,然后询问区间字符串是否处于已给定的字符串集合中这里将原来的字符串集合保存到hash表中,当然用map,set都没有问题修改查询都用线段树实现,自己的query函数写的有问题,按照网上的改了就没问题写一下自己的理解,因为左右子树合并的时候,需要计算右子树生成的字符串的...
阅读全文
HDU 4334 5-sum
摘要:题目大意:从5个集合中个选取一个数出来,使5个数相加之和为0,判断是否存在这种可能因为集合数目最多200,那么200^3 = 8000000,那么这里很明显要把5个数拆成2个和3个计算,因为3个的话有8000000种可能,不好保存所以只先算前两个数40000种相加的可能性保存到hash表中,然后再后...
阅读全文
POJ 2549 Sumsets hash值及下标
摘要:题目大意:找到几何中的4个数字使他们能够组成 a+b+c=d ,得到最大的d值我们很容易想到a+b = d-c那么将所有a+b的值存入hash表中,然后查找能否在表中找到这样的d-c的值即可因为4个数字都不能相同,那么我们同时要在hash表中记录相加两个数的下标,然后查找的时候还要进行下标判断这里用...
阅读全文
POJ 2002 几何+hash
摘要:题目大意:给定1000个点,寻找有多少组四点对能组成正方形这里的题目跟上一道做的找平行四边形类似但想法却又不相同的方法这里找任意2个点形成的一条边,那么可以根据这两个点,找到能和他们组成正方形剩下的两个点的位置,根据hash表去搜索,如果这两个位置存在自己需要的点,说明这种方案可行添加查找均交给ha...
阅读全文
POJ 1635 树的最小表示法
摘要:题目大意:用一堆01字符串表示在树上走动的路径,0表示往前走,1表示往回走,问两种路径方式下形成的树是不是相同的树我们可以利用递归的方法用hash字符串表示每一棵子树,然后将所有子树按照字典序排序,来判断这个hash字符串是否相同 1 #include 2 #include 3 #include...
阅读全文
HDU 1800 hash 找出现最多次数的字符串的次数
摘要:乘法hash:这类hash函数利用了乘法的不相关性int Hash(char *str){ int seed = 131 , value=0; while(*str != '\0'){ value = value*seed+(*str++); } return value&0x7fffffff;}这...
阅读全文
浙公网安备 33010602011771号