"传送门" T=0,就是求本质不同,后缀数组经典用法 T=1,二分解决 代码: ...
分类:
其他好文 时间:
2019-03-04 20:58:24
阅读次数:
163
题目大意: 给定一个字符串,求它的第k小子串。 思路: 后缀自动机的模板题。 考虑将后缀自动机建出来之后,求出每一个状态在原串中出现了多少次,然后统计以每个节点往后拓展的字符串总共有多少种(按照拓扑序累加即可),最后直接在DAG上做类似二分的就好了。 cpp / ================== ...
分类:
其他好文 时间:
2019-02-09 17:40:53
阅读次数:
184
对于一个给定长度为$N$的字符串,求它的第$K$小子串是什么。 Input 第一行是一个仅由小写英文字母构成的字符串$S$ 第二行为两个整数$T$和$K$,$T$为0则表示不同位置的相同子串算作一个。$T=1$则表示不同位置的相同子串算作多个。$K$的意义如题所述。 Output 输出仅一行,为一个 ...
分类:
其他好文 时间:
2018-12-10 20:49:06
阅读次数:
183
题面 "传送门" Sol $sam$ 求一个串的不重复的第$k$小子串很好办 如果可以相同 那么要算上每个点(前缀)的后缀的个数 那么就是这个$endpos(right)$集合的子串的出现次数 cpp include define IL inline define RG register defin ...
分类:
其他好文 时间:
2018-04-21 16:08:11
阅读次数:
188
前几天写的题,今天补写个blog T的情况get right集合的时候特判一下。 因为SAM就是有序的,所以可以dfs求解。 把parent树构建出来,sum表示当前子树的right和,搜一下就出来了。 ...
分类:
其他好文 时间:
2018-04-01 21:54:26
阅读次数:
162
【BZOJ3998】弦论(后缀自动机) 题面 "BZOJ" 题解 这题应该很简单 构建出$SAM$后 求出每个点往后还能构建出几个串 按照拓扑序$dp$一些就好了 然后就是第$k$大,随便搞一下就好 ...
分类:
其他好文 时间:
2018-02-15 20:30:58
阅读次数:
205
后缀自动机 我们建出后缀自动机,对于每个节点我们算出他和他的后继结点一共可以形成多少个不同的串,不同根据t来定义 这里我们不需要考虑每个节点代表的那些等价类字符串,因为那些字符串不同的前缀在到达这个节点前已经确定了,所以我们只需要在t=1时一下考虑right集合的大小,right集合的大小需要在pa ...
分类:
其他好文 时间:
2018-01-28 16:32:05
阅读次数:
178
后缀自动机丝薄题。 求给定字符串$s$的第$k$大的子串。分unique之后的和不unique的两种询问。 首先构建出SAM。 相同子串算一个的情况: SAM上所有路径组成字符串$s$的全部子串,每个状态向下不管怎么走,形成的串都是以当前状态为前缀的。(废话) 所以我们只要知道以当前串为前缀的串有多 ...
分类:
其他好文 时间:
2018-01-18 00:58:47
阅读次数:
132
题目 对于一个给定长度为N的字符串,求它的第K小子串是什么。 输入格式 第一行是一个仅由小写英文字母构成的字符串S 第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个。T=1则表示不同位置的相同子串算作多个。K的意义如题所述。 输出格式 输出仅一行,为一个数字串,为第K小的子串。如果子串 ...
分类:
其他好文 时间:
2018-01-17 20:21:16
阅读次数:
180
后缀自动机+dp 想了挺长时间 后缀自动机的状态图是一个dag,从root走到一个点的路径数代表了这个状态包含的子串,我们先预处理出来每个节点向后走能够形成多少子串,注意这里不是直接在parent树上求和,我们先求出每个节点的right集合的大小,然后在状态图上统计儿子的路径数,因为向儿子走相当于添 ...
分类:
其他好文 时间:
2017-11-18 18:47:26
阅读次数:
178