
数据结构——hash
文章平均质量分 76
HARD_UNDERSTAND
Just try
展开
-
Uva 1152 和为0的4个值 hash/二分
题意: 给定4个n(1 <= n <= 4000)元素集合A, B, C, D,要求分别从中选取一个元素a, b, c, d,使得a+b+c+d = 0,问有多少种选法。 分析: 显然四重循环是过不了的,我先想到的是用map把a+b,c+d分别保存起来,然后在查找统计。超时。。。。 然后书上说用哈希表去实现,看到有的题解hash表示的太巧妙了,学习一下。 还有就是这题可以用二分解决,先计算原创 2016-05-10 11:13:46 · 1202 阅读 · 0 评论 -
poj 3007 哈希
题目:http://poj.org/problem?id=3007 题意: 给定一个字符串,从任意位置把它切为两半,得到两条子串 定义 子串1为s1,子串2为s2,子串1的反串为s3,子串2的反串为s4 现在从s1 s2 s3 s4中任意取出两个串组合,问有多少种不同的组合方法 分析: 发现字符串长度最多为72,刚开始用的string+substr+reverse构造新子串,直原创 2016-09-07 17:55:22 · 243 阅读 · 0 评论 -
hdu 4622 求区间不同子串数 后缀数组|后缀自动机|字符串hash
题意: 给你一个长度不超过2000只由小写字母组成的字符串。然后q个询问q不超过10000.每个询问询问一个区间[l,r]内有多少不同的子串。后缀数组分析:这题的做法和论文那题的思想是一样的,就是对于[l,r]区间里的后缀,当一个串i加进去对答案的贡献必须减掉它和之前所有串重复的部分。也就是和它lcp最大的那个,所以答案就是: 所有的串-重复的串。(当然这里的串都是[l,r]区间里的)我们用一个原创 2016-09-01 10:59:48 · 465 阅读 · 0 评论 -
poj 3261 / LA 4513 可重叠的 k 次最长重复子串(后缀数组/字符串hash)
poj 3261 题意: 给出n个数,求可重叠的k次最长的重复子串的长度 分析: 后缀数组: 这题的做法和上一题差不多,也是先二分答案,然后将后缀分成若干组。不 同的是,这里要判断的是有没有一个组的后缀个数不小于 k。如果有,那么存在 k 个相同的子串满足条件,否则不存在。这个做法的时间复杂度为 O(nlogn)#include<cstdio> #include<algorithm>原创 2016-09-01 10:44:34 · 356 阅读 · 0 评论 -
poj 3349 简单hash
题意: 每个雪花都有六个分支,用六个整数代表,这六个整数是从任意一个分支开始,朝顺时针或逆时针方向遍历得到的。输入多个雪花,判断是否有形状一致的雪花存在。 分析: 简单的哈希,用取余法保存和相同的雪花,然后在判断雪花的各边即可。简单起见,用vector保存。链表麻烦点。 #include #include #include #include #include #include #i原创 2016-07-10 23:48:56 · 316 阅读 · 0 评论 -
poj 2503 简单哈希
题意: 输入一个字典,然后查询字典,翻译单词。 分析: 这题以前做过,是Trie树的入门题,当时也用map水过,现在用hash再水一遍。。。 比较好的输入处理: sscanf(str,"%s %s",str1,str2); #include #include #include #include using namespace std; const int prime=原创 2016-07-11 21:35:32 · 275 阅读 · 0 评论 -
poj 2002 哈希+几何
题意: 给出一些平面上点的坐标,用其中的点做顶点,求其中能组成正方形的个数。 分析: 这题的做法很容易想到,枚举两个点,然后求出正方形另外两个点的坐标,用哈希判断一下是否存在即可(当然也可以排完序后二分)。 思路是简单的,关键是怎么通过正方形的两个点求出另外两点的坐标?可以想到可以枚举正方形的一边或者对角线,其实都可以通过公式得到两点,那么就看怎么求另外两点容易了。我用的是枚举正方原创 2016-07-11 18:19:38 · 408 阅读 · 0 评论 -
poj 1840 简单哈希
题意: 给出ai(i=1~5),求a1 * x1^3+ a2 * x2^3+ a3 * x3^3+ a4 * x4^3+ a5 * x5^3=0在-50到50之间的x的解的个数 分析: 把前三个的和放到hash里,然后枚举后两个的和,查一下hash即可。 这题也可以用map去做。 #include #include #include #include #include原创 2016-07-11 12:22:37 · 276 阅读 · 0 评论 -
poj3274 hash
题意: n头牛站一排,每个牛有k个属性,每个属性有两种取值:1或0。(1表示拥有该属性,0表示没有)要求找一个牛的最长连续队伍(子段),这个队伍中拥有每个属性的牛的个数相同。 分析: 这题快要我WA哭了,总是WA,还不是超时,然而我又找不出错误,对着下面的博客对拍代码,终于发现了QAQ。(下面注释) 思路:sum[i][j]前i头牛的feature的总数。 sum[a][j]-sum原创 2016-07-10 23:42:33 · 289 阅读 · 0 评论 -
2017 ACM-ICPC西安赛区网络赛 Barty's Computer【哈希】
题目:https://nanti.jisuanke.com/t/17122 题意:一共Q次操作,操作有两种: 1 str : 表示增加一个字符串str(长度一定是偶数) 2 a b c d : 询问有多少个字符串满足str = a + s1 + b + c + s2 + d, 且|a|+|s1|+|b| = |c|+|s2|+|d|, s1, s2可以是任意字符串,空的也可以。 Q <= 3原创 2017-10-11 13:53:24 · 342 阅读 · 0 评论