
字符串算法-字符串哈希
Rain722
这个作者很懒,什么都没留下…
展开
-
HDU4886 TIANKENG’s restaurant(Ⅱ)(哈希)
题意:一个字符串有许多子串 现要找出最短的字典序最小的不是它的子串的串 这个长串只有A~H字母分析:首先估计下答案的最长长度,如果答案的长度为7,那么字符串种类就有8原创 2017-06-09 19:20:55 · 346 阅读 · 0 评论 -
HDU6191Query on A Tree(字典树启发式合并)
题意:有一棵n个节点的有根树,每个节点都有一个值,m次查询,每次两个数x y表示以x为根的子树中哪个节点权值异或y得出的结果最大,求最大结果思路:离线和线段树合并一样,在搜索过程中将多个字典树并在一起每次查询遍历以当前子树的根为根的字典树#includeusing namespace std;#define N 100005templa原创 2017-09-01 17:04:18 · 942 阅读 · 0 评论 -
Codeforces601D Acyclic Organic Compounds(dfs+字典树合并)
给一颗n(1 ≤ n ≤ 300 000)个节点的树,root=1,每个节点上有一个字母,每个子树从根开始向下遍历到任意节点停下,经过的不同字符串个数为diff[i], 已知ci,求max(diffi+ci)与符合条件的i的个数求出diffi就行 考虑给每个子树建一颗字典树,然后不断合并字典树 然后优先让节点数大的向小的合并#includeusing na原创 2017-09-25 15:12:05 · 359 阅读 · 0 评论 -
字典树入门爽一发
1. Trie树Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。它有3个基本性质原创 2016-09-09 19:27:43 · 783 阅读 · 0 评论 -
Trie树详解及其应用
一、知识简介 最近在看字符串算法了,其中字典树、AC自动机和后缀树的应用是最广泛的了,下面将会重点介绍下这几个算法的应用。 字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key-value 映射,只不过 Trie 的 key 只能是字符串。 Trie 的强大之处就在于它的时间复杂度。它的插入和转载 2017-02-08 19:11:23 · 363 阅读 · 0 评论 -
HDU5536 Chip Factory Trie(01字典树)
题意:给出n(3≤n≤1000)n(3≤n≤1000)个数字,求max(si+sj)⨁skmax(si+sj)⨁sk,而且i,j,ki,j,k互不相等。分析:把每个数字看成一个0101字符串插入倒Trie树中去,枚举ii和jj,然后把sisi和sjsj从Trie树中删去。然后在Trie树中贪心找到能与si+sjsi+sj异或得到的最大值。具体匹配的过程中是这样的,首原创 2017-07-22 13:21:28 · 270 阅读 · 0 评论 -
字符串匹配的KMP算法之初学整合
KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm Rain",字符串B="Rain",我们就说B是A的子串。你可以委婉地问你的MM:“假如你要向你喜欢的人表白的话,我的名字是你的告白语中的子串吗?”首先给出阮一峰博客的图文详解(阮老师还是一如既往的强大)原文链接http://www.ruanyifen原创 2016-09-26 21:07:23 · 616 阅读 · 0 评论 -
HDU5510Bazinga(KMP+剪枝)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5510题目大意:给n个字符串,求出最大的i使得对于第i个字符串,他的前i-1个字符串中至少有一个不是他的子串。思路:很容易想到利用KMP算法判断子串,但是直接操作是会超时的,所以我们加上一个剪枝:设立一个vis[i]数组,举个例子:如果1是3的子串,则原创 2017-07-29 18:33:02 · 365 阅读 · 0 评论 -
51nod1277 字符串中的最大值(KMP)
1277 字符串中的最大值题目来源: Codility基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题一个字符串的前缀是指包含该字符第一个字母的连续子串,例如:abcd的所有前缀为a, ab, abc, abcd。给出一个字符串S,求其所有前缀中,字符长度与出现次数的乘积的最大值。例如:S = "ababab原创 2017-08-20 17:25:05 · 470 阅读 · 0 评论 -
BZOJ3670【NOI2014】动物园(KMP变形)
3670: [Noi2014]动物园Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2990 Solved: 1621[Submit][Status][Discuss]Description近日,园长发现动物园中好吃懒做的动物越来越多了。例如企鹅,只会卖萌向游客要吃的。为了整治动物园的不良风气,让动物们凭自己的真才实学向原创 2017-09-28 16:23:32 · 743 阅读 · 0 评论 -
HDU2222Keywords Search(AC自动机裸题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2222题意:判断一个文章内包含多少个模式串(可能有重复)。#include#include#includeusing namespace std;const int kind = 26;struct node{ node *fail; node *next[k原创 2017-03-25 11:13:05 · 544 阅读 · 0 评论 -
Ural1297Palindrome最长回文串.manacher解法
DescriptionThe “U.S. Robots” HQ has just received a rather alarming anonymous letter. It states that the agent from the competing «Robots Unlimited» has infiltrated into “U.S. Robotics”. «U.S. R原创 2016-10-07 16:47:44 · 401 阅读 · 0 评论 -
BZOJ3507通配符匹配(DP + Hash)
搬运题解系列:http://www.cnblogs.com/DaD3zZ-Beyonder/p/5962702.html3507: [Cqoi2014]通配符匹配Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 372 Solved: 156[Submit][Status][Discuss]Descriptio原创 2017-08-29 19:02:05 · 573 阅读 · 0 评论 -
UVA257Palinwords(哈希)
题目地址描述问一堆单词中,哪些是 palinword 并输出。palinword 的定义为,包含两个不同的回文子串,并且要求回文子串不能互相包含,可以部分重叠。规模单个单词长度 l l=255。样例输入MOEILIJKHEDEN INVOERVERNEDERENAMUMA AMAMA MUMMUMAMATRAMA AAAAABATRA原创 2017-08-03 10:47:17 · 410 阅读 · 1 评论 -
UVA12338Anti-Rhyme Pairs(哈希+二分最长前缀)
题意:给出一些串,询问任意两个的公共前缀。分析:对于每个串处理出所有前缀的HASH值,询问的时候二分公共前缀长度,比较HASH值是否相等。#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;ull Hash, seed = 131;const int maxn =原创 2017-08-02 21:45:34 · 404 阅读 · 0 评论 -
UVA11475 Extend to Palindrome(哈希)
题意:给出一个字符串,让你添加最少的字符,使其成为回文串。思路:这个题是求出最长的回文后缀。这里我们可以用字符串hash来做这道题。 我们从后往前求出后缀的从前向后和从后向前的子串的hash值,如果hash值相同,说明该位置是回文串。#includetypedef long long ll;using namespace std;char原创 2017-08-02 21:26:20 · 341 阅读 · 0 评论 -
Codeforce#430D.Vitya and Strange Lesson(01Trie)
题意:每次询问一个x,问数组中的数与x异或后,不存在的最小的数。分析:01字典树上贪心选择一下,选择的时候判断左孩子和右孩子满不满。每次询问的亦或值x只要一直累⊕就行#includeusing namespace std;#define N 300005#define H 19bool vis[N];struct node{ node *nxt[2];原创 2017-09-01 12:33:26 · 326 阅读 · 0 评论