后缀数组
A_Comme_Amour
胜利油田第一机房
展开
-
[学习笔记]字符串(未完)
Trie树(字典树)Trie树,又称字典树、前缀树,是一种树形结构,是哈希树的变种,是一种用于快速检索的多叉树结构。 典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。 ...原创 2018-02-24 19:25:50 · 293 阅读 · 0 评论 -
【BZOJ1717】[Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组+二分)
题目传送门题解求重复至少k次的最长子串长度(可重叠) 求出sa数组和height数组之后,二分出一个长度,判断height数组中大于这个值的数是否有k个代码#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using ...原创 2018-04-14 22:05:06 · 495 阅读 · 0 评论 -
[BZOJ3238][AHOI2013]差异(后缀数组+单调栈)
题目传送门 题解求一个定值减去所有后缀组合的lcp*2之和 O(n2)O(n2)O(n^2) 枚举所有的1≤i<j≤n1≤i<j≤n1\leq iO(1)O(1)O(1)求出lcp(Ti,Tj)lcp(Ti,Tj)lcp(T_i,T_j);n的范围无法承受 O(Nlog2N)O(Nlog2N)O(Nlog_2N) 根据height[]height[]height...原创 2018-04-15 09:37:48 · 338 阅读 · 0 评论 -
不同子串个数(后缀数组)
题目传送门题解后缀数组的经典应用,重点在于这一句:ans+=(ll)(n-sa[i])-height[i];代码#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;#define l...原创 2018-04-04 06:45:49 · 849 阅读 · 0 评论 -
[BZOJ3172][Tjoi2013]单词(AC自动机)
题目传送门题解AC自动机 AC自动机第一题,感觉做起来非常不顺,感觉难点在于处理单词重叠的问题 大体的思路应该是,我们把每个单词出现的字母在fail树上进行累加,然后建立bfs序,把单词的字母的ans累加到单词的第一个字母上(应该是这样吧?),输出答案; 另一种实现方法:这是我刚开始想到的,在每个单词之间添加一个'#''#''#'分隔组成文章,在处理重叠单词上:我们的mp[k...原创 2018-04-22 14:32:30 · 331 阅读 · 0 评论