哈希算法
keyboarder_zsq
你所认为的极限,其实是别人的起点。
展开
-
POJ2549【hash分离链接法】
123原创 2017-02-28 21:29:46 · 93 阅读 · 0 评论 -
HDU1488【分离链接法】
#include using namespace std;typedef long long LL;const int X=1e6+7;struct asd{ int next; int num; LL id;}q[X];int link[X];int tol;void init(){ tol=1; for(int i=0;i<X;i+原创 2017-03-31 22:00:02 · 564 阅读 · 0 评论 -
UVA6284【状态前缀异或+hash】
题意: 给一个字符串,问有多少个区间能构成回文串。 构成要求只要满足存在所有种类字符数量相等,或者只存在一种的个数是奇数。 思路: 由于字符比较少,考虑 2522^{52} 状压,long long 还是吃的消的。 然后一直加入状态, 先检查这个状态是否满足。我们可以看到对于状态(单纯考虑4位): 1 1 1 0 如何从他割掉一些状态达到满足,可以看到有1 0 0 0这个是吧,原创 2017-07-06 02:17:21 · 503 阅读 · 0 评论 -
POJ3349【手写Hash】
基础题。 利用邻接表,价值hash值为数组head[]的下标,然后在该链下寻找。//#include <bits/stdc++.h>#include<iostream>#include<cstdio>#include<cstring>#include<string.h>#include<queue>#include<cmath>#include<algorithm>using na原创 2017-07-08 01:51:28 · 612 阅读 · 0 评论 -
POJ3461【1e6 字符串 hash模板】
两种hash方法(双hash…算了吧,除非字符串很短,然后又wa了才用)方法1: unsigned long long hash[N]; 定义一个unsigned long long类型的变量,它的范围是在[0, 2^64) 内,这就相当于,当数超不过2^64-1后,它会溢出!这就相当于一个数模2^64的过程。 那么hash函数可以理解为: hash[i]=(hash[i−1]×p+s[i]原创 2017-08-15 10:04:00 · 511 阅读 · 0 评论 -
Codeforces662C【字符串hash维护+DP】
思路: 每个串可以用多次且每个串的长度<=1000,那么就简单了。 字符串可以字典树或者hash维护,然后暴搞就好了,记录一下路径,然后输出就好了。 1e6的字符串hash复杂度还是可观的 复杂度:O(N*W)//#pragma comment(linker, "/STACK:102400000,102400000")#include <stdio.h>#include <string.原创 2017-09-23 01:22:11 · 362 阅读 · 0 评论