hash
double1994
这个作者很懒,什么都没留下…
展开
-
POJ 3349 Snowflake Snow Snowflakes
hash卡时间比较紧,二次hash。每片雪花记录12个子序列中最小升序的序列的hash值。否则12种都记录超时。解决冲突的方法叫线性探查法...听着蛮复杂的。其实就是出现冲突后往后找没有存储数据的位置,查询时也是一直往后找到没有存储数据的位置。PS:感觉上在冲突后在当前数据位置加上数据量(k+100000)后的位置存储要快点,因为如果冲突较少而数据比较密集时,某个冲突的数据后延后会导致后面所有原创 2013-09-01 10:50:30 · 662 阅读 · 0 评论 -
POJ 3274 Gold Balanced Lineup
hash,先统计从1到i头牛的特征综合,求最大长度平衡子列。平衡子列满足s[i][0]=s[j][0];s[i][1]=s[j][1]...瞄过题解后发现可以转换为s[i][0]-s[i][k]=s[j][0]-s[j][k](1PS:为了节省点时间,犯了个傻×错误。。。应该从下一个相同hash值的点找,此处下标已经和原来的下标没关系了。我将其赋值为下一个点和当前点加上已经记录最长序列长度。在第四原创 2013-09-01 17:52:52 · 761 阅读 · 2 评论 -
POJ 1840 Eqs
本题主要就是一开始的想法,想到后就比较水了。(没想到啊。。。)解5元方程组,每个未知数从-50~50,先三个一组枚举所有可能值,记录下次数,剩下的两个一组,出现之前出现过的值即将总数加上当前值之前出现过的次数(因为未知数正负对称,找与自己相同的值亦可,不一定非要找相反数,不过没什么实际差别),记录出现次数时,因为范围较大,无法直接开数组,按下标对应记录。所以Hash下就行。#include#原创 2013-09-04 18:51:53 · 628 阅读 · 0 评论 -
POJ 3461 Oulipo
kmp的题,某波神说hash可以代替kmp,于是又hash过了遍。关键是提取中间hash值的部分#include#include#include#includeusing namespace std;const int hv=47;char a[10001];char b[1000001];int r[1000001];int fac[1000001];int main()原创 2013-09-04 21:16:35 · 574 阅读 · 0 评论 -
POJ 2503 Babelfish
水题,鉴于是第一过了的hash,还是记录下... 想用SET来着,可是不熟,同时记录下标和哈希值不会用... ...自己sort加二分查找过的。#include#include#include#include#includeusing namespace std;const int N=999983;const int hash1=131;char a[100005][20];原创 2013-08-30 10:35:52 · 583 阅读 · 2 评论 -
POJ 2541 Binary Witch
比较水的一题,正解觉得是状压,但是第一眼看去就觉得是hash,其实本题hash状压是一样的。#include //hash#include #include #include #include #include using namespace std;typedef long long LL;#define lson l, m, rt << 1#define rson m +原创 2014-03-27 21:01:23 · 487 阅读 · 0 评论