题目链接: https://codeforces.com/contest/432/problem/D 题解L 做法一: KMP 显然next树上$n$的所有祖先都是答案,出现次数为next树子树大小。 做法二: 后缀数组 按照height分组,二分查找即可。 代码 KMP: ...
分类:
编程语言 时间:
2019-06-18 09:15:27
阅读次数:
115
倍增法,每次排2^j长度的段,转移就是双关键字排序就好啦! 求height可以利用height[rank[i]]>=height[rank[i-1]]-1的性质,当然证明考虑构造,并反证,假设在其中插入元素使性质不成立,推矛盾就可以了。 基本上是从网上抄来的模板啦,解释一下代码吧~ x在交换之前充当 ...
分类:
编程语言 时间:
2019-06-12 01:05:05
阅读次数:
101
You are given an array 𝑎1,𝑎2,…,𝑎𝑛 and an integer 𝑘 . You are asked to divide this array into 𝑘 non-empty consecutive subarrays. Every element in ...
分类:
编程语言 时间:
2019-06-07 20:52:57
阅读次数:
106
Boring counting $$ Time Limit: 1000 ms \quad Memory Limit: 32768 kB $$ 题意 给出一个字符串,求出其中出现两次及以上的子串个数,要求子串之间不可以重合。 思路 对字符串后缀数组,然后枚举子串长度 $len$,若某一段连续的 $sa ...
分类:
编程语言 时间:
2019-05-24 01:05:23
阅读次数:
112
前言 这篇博客真难写,暂定待更 定义 后缀数组[SuffixArray]是一个一维数组,简称SA,它保存1到n的某个 排列 $SA[1] ,SA[2],\dots,SA[n]$,并且保证$Suffix(SA[i]) include include include include using name ...
分类:
编程语言 时间:
2019-05-23 00:10:20
阅读次数:
143
Lexicographical Substrings Search $$ Time Limit: 149 ms \quad Memory Limit: 1572864 kB $$ 题意 给出一个字符串,求出这个字符串上字典序第 $k$ 小的子串。 思路 对于给出的字符串,求出后缀数组,根据后缀数组的 ...
分类:
编程语言 时间:
2019-05-22 19:09:47
阅读次数:
98
O(nlogn)的做法十分显然,有三种可以做到O(nlogn)的:1、最容易的想法:把串扩展成两倍,然后跑一遍SA求后缀数组。2、求后缀同样也可以用SAM去求解,用map存一下。3、最暴力的方法:直接二分+hash比较第一位不同的。 其实这题想要让我们用最小表示法求解,然而我不会就来学一下。很容易发 ...
分类:
其他好文 时间:
2019-05-11 13:40:28
阅读次数:
136
粗体 表示 概念 上的重点; 斜体 表示 行文逻辑 上的重点; 下划线表示 个人理解 ,可能含有大量的直觉,缺乏严谨的数学推导。 顺序与OI知识的学习顺序和难度不一定相关!!! KMP ExKMP Manacher Hash 后缀数组,SA 字典树,Trie树 AC自动机 回文自动机 后缀自动机,S ...
分类:
其他好文 时间:
2019-05-04 14:56:08
阅读次数:
130
这题二分加HASH 6-7秒,如果能用unordered_map,5秒。后缀自动机200-400ms。后缀数组(没写)大概2000ms。 ...
分类:
其他好文 时间:
2019-05-03 11:53:08
阅读次数:
167
题目链接: "戳我" Emmm......hash怎么做啊不会啊 这里是SA后缀数组版本的 就是先两两做差分,作为要处理后缀的数组。普通地求出来h数组之后,我们二分这个答案,然后判定是否合法就行了。是否合法即$min(sa[j])+h[i] include include include inclu ...
分类:
其他好文 时间:
2019-04-20 22:55:54
阅读次数:
187