随笔分类 -  字符串-后缀数组

摘要:"A. Diagonal Walking" 题意 将一个序列中所有的$'RU'$或者$'UR'$替换成$'D'$,问最终得到的序列最短长度为多少。 思路 贪心 Code "B. String Typing" 题意 要得到一个字符串,有两种操作: 1. 打印一个字符 2. 将前面打印过的部分拷贝一遍跟 阅读全文
posted @ 2018-03-28 01:43 救命怀 阅读(161) 评论(0) 推荐(0)
摘要:"题目链接" Description 给出$n$个序列。找出这$n$个序列的最长 相同 子串。 在这里, 相同 定义为:两个子串长度相同且一个串的全部元素加上一个数就会变成另一个串。 思路 参考: "hzwer" . 法一:kmp 在第一个串中枚举答案串的开头位置,与其余$n 1$个串做$kmp$. 阅读全文
posted @ 2018-02-12 19:28 救命怀 阅读(190) 评论(0) 推荐(0)
摘要:"题目链接" Description 一个长度为$n$的字符串$S$,令$T_i$表示它从第$i$个字符开始的后缀。求$$\sum_{1\leq i\leq j\leq n}len(T_i)+len(T_j) 2 lcp(T_i,T_j)$$其中,$len(a)$表示字符串$a$的长度,$lcp(a 阅读全文
posted @ 2018-02-12 12:09 救命怀 阅读(137) 评论(0) 推荐(0)
摘要:"题目链接" 题意 对于任意的字符串,定义它的 重复次数 为:它最多可被划分成的完全相同的子串个数。例如: 的重复次数为3, 的重复次数为1. 现给定一字符串,求它的一个子串,其重复次数取到最大值,且字典序取到最小值。 思路 参考 "hzwer" . 首先,重复次数显然至少为$1$,所以下面只考虑重 阅读全文
posted @ 2018-02-12 10:26 救命怀 阅读(183) 评论(0) 推荐(0)
摘要:"题目链接" 题意 对于给定的字符串,求有多少个 不重叠的子串 出现次数 $\geq 2$. 思路 枚举子串长度 $len$,以此作为分界值来对 $height$ 值进行划分。 显然,对于每一组,组内子串具有一个长度为 $len$ 的公共前缀。 至于是否重叠,只需判断 $sa_{max} sa_{m 阅读全文
posted @ 2018-02-10 22:40 救命怀 阅读(175) 评论(0) 推荐(0)
摘要:"题目链接" 题目描述 对于一个给定的字符串,可以从左右两端取字符,依次排列构成一个新的字符串。 求可能构成的字符串中字典序 最小的一个。 例:ACDBCB ABCBCD 思路 参考自 "xueyifan1993" . 正确的 贪心 姿势: 记左端位置为 $l$,右端位置为 $r$,比较 $suff 阅读全文
posted @ 2018-01-27 22:51 救命怀 阅读(239) 评论(0) 推荐(0)
摘要:"题目链接" 题目描述 给定一个字符串,求至少出现 $k$ 次的最长重复子串,这 $k$ 个子串可以重叠。 思路 二分 子串长度,据其将 $h$ 数组 分组 ,判断是否存在一组其大小 $\geq k$. Code 阅读全文
posted @ 2018-01-27 22:13 救命怀 阅读(103) 评论(0) 推荐(0)
摘要:"题目链接" 题目描述 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考。一天,他突然想出了一种他认为是终极的加密办法 :把需要加密的信息排成一圈,显然,它们有很多种不同的读法。例如下图,可以读作: JSOI07 SOI07J OI07JS I07JSO 07JSOI 7JSOI0把它们按照字符 阅读全文
posted @ 2018-01-27 21:52 救命怀 阅读(141) 评论(0) 推荐(0)
摘要:"题目链接" 题意 问两个字符串的最长公共子串。 思路 加一个特殊字符然后拼接起来,求得后缀数组与$height$数组。扫描一遍即得答案,注意判断起始点是否分别在两个串内。 Code include define maxn 200010 using namespace std; typedef lo 阅读全文
posted @ 2017-10-26 11:21 救命怀 阅读(113) 评论(0) 推荐(0)