字符串—hash
发型睡姿决定
越努力,越幸运
展开
-
字符串 hash 讲解及模板
字符串 hash 讲解1、Hash是什么Hash就是一个像函数一样的东西,你放进去一个值,它给你输出来一个值。输出的值就是Hash值。一般Hash值会比原来的值更好储存(更小)或比较。Hash函数具有抗碰撞性、单向性、雪崩效应等有单关键字Hash和多关键字Hash等2、字符串Hash解读字符串Hash:把字符串转换成一个整数的函数;而且要尽量做到使字符串对应唯一的Hash值。H...原创 2019-08-12 10:05:03 · 500 阅读 · 0 评论 -
牛客hash字符串(求循环同构)
题解:循环同构要求长度一样,因此可以求出T的每个循环同构的has值,然后对于输入的t,求出每个长度为strlen(T)的子串的has值,判断他在T中是否存在即可。开始的时候has值用map存的,因为每次查找都要log(n)的效率,超时了,所以用了head指针,用mod以内的数映射所有x.注:因为这样的时间复杂度极不稳定,有时需要调整mod的值来尝试比如这题:mod=1007超时...原创 2019-08-12 10:38:30 · 312 阅读 · 0 评论 -
Seek the Name, Seek the Fame POJ - 2752(KMP和hah两种方法求公共前后缀)
POJ - 2752问题分析:读懂题后知道,这个题要算的是,给定一个字符串s,有哪些长度的s的前缀,同时也是s的后缀。首先明确一下前缀和后缀的概念。字符串s的前缀是指,从s的开始字符到s的任意字符为止的子串。字符串s的后缀是指,从s的任意字符到s的最后字符为止的子串。s是既是自身的前缀也是自身的后缀。这个问题利用KMP算法的next[]数组来解。首先对于输入的字符串s,计算其next[]数...原创 2019-08-12 10:52:25 · 170 阅读 · 0 评论 -
D - 魔咒词典 HDU—1880(双Hash值和map||Hash+二分)
HDU—1880中文题目题意就不多说了双hashAC代码get1()得到的是第一重哈希,get2()得到的是第二重哈希,我们用双重哈希来得到精确的哈希值答案。注意map的用法。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include...原创 2019-08-12 12:07:08 · 212 阅读 · 0 评论 -
Oulipo HDU - 1686(hash做法求子串的出现的数量)
HDU - 1686题意:给你一个S串和T串,问你S串在T串出现了几次。思路:直接把S串哈希一下,再去T字符串枚举长度与S串相同的字串,看是否相同。统计个数。#include <bits/stdc++.h>using namespace std;#define ull unsigned long long#define LL long longconst int m...原创 2019-08-12 15:15:13 · 131 阅读 · 0 评论 -
Power Strings POJ - 2406(字符串hash求最小循环节)
POJ - 2406题目大意:给出一个字符串 问它最多由多少相同的字串组成 。如 abababab由4个ab组成。#include <bits/stdc++.h>using namespace std;#define ull unsigned long longconst int maxn=1000005;ull base =131;char s[1000005];...原创 2019-08-12 15:57:07 · 429 阅读 · 0 评论 -
Equations—HDU_1496(巧用Hash)
HDU—1496题意:求有多少种解!#include <iostream>#include <fstream>#include <algorithm>#include <string>#include <set>#include <map>#include <queue>#include <...原创 2019-08-12 17:17:26 · 99 阅读 · 0 评论 -
G - 前m大的数 HDU - 1280(整数hash求前m大个数)
HDU—1280题目大意:有N个数,让他们两两求和,得到 (n)*(n-1)/2 个数,让你输出前m大个数(从大到小)思路:将各种组合可能得到的和作为下标,然后因为不同组合得到的和可能是一样的,所以再用一个数组cnt[]数组,就可以将相同的和都记录下来#include <iostream>#include <cstdio>#include <cmath&...原创 2019-08-13 09:28:29 · 125 阅读 · 0 评论 -
F - Censor SCU - 4438(Hash字符串+前缀和)
SCU—4438题意:一个敏感词w和一个文本p,在文本中不断地删除敏感词w,求最后的剩下的文本p。思路:求出敏感词的hash值,定p的每一个字符都是以第一个字符开始的一个句子,求出它们的hash值入栈,当某一段的hash值等于敏感词的hash值时,将这段字符出栈。#include<bits/stdc++.h>#define ull unsigned long longus...原创 2019-08-13 09:39:21 · 1789 阅读 · 0 评论