随笔分类 -  字符串

就是各种并不对劲的字符串
摘要:#####题目大意 有一个长度为$n$的字符串$s_1,...,s_n$。 用它生成的$n$个长度为$n-1$的串,$i$号串是$s_1,...,s_,s_{i+1},...,s_n$。 将这$n$个串按字典序排序,字典序相同的编号小的排前面,输出编号的顺序。 \(n\leq 10^6;\) ### 阅读全文
posted @ 2020-06-08 20:39 echo6342 阅读(172) 评论(0) 推荐(0)
摘要:#####题目大意 给一个小写字母串$s$,问有多少个长度为$m$的小写字母串满足无限重复后存在一个子串的字典序小于$s$。 \(m\leq 2000;n\leq 2000;\) #####题解 “给出一些串,求以(或不以)这些串为子串的满足某些条件的串的数量”这类问题,通常是在AC自动机上dp。 阅读全文
posted @ 2020-06-04 21:57 echo6342 阅读(174) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-12-12 10:41 echo6342 阅读(1) 评论(0) 推荐(0)
摘要:"这个人" 讲得很清楚 关键在于把“匹配”转换成“某个式子的值为0”。 include include include include include include include include include include include include include include de 阅读全文
posted @ 2019-09-28 08:59 echo6342 阅读(139) 评论(0) 推荐(0)
摘要:题目大意 有一个串$s$,一开始只知道它的一个前缀。有$q$($q\leq 10^4$)个操作,操作有两种:1.给一个字符串,表示$s$($s$总长$\leq 6\times 10^5$)当前未知部分的前缀;2.给一个字符串,问$s$的已知部分中有几个子串和该串相同,询问串总长$\leq 3\tim 阅读全文
posted @ 2019-09-25 12:53 echo6342 阅读(230) 评论(0) 推荐(0)
摘要:题目大意 $n$个点的树,每条边上有一个小写字母。 操作:给定2个点$u$,$v$($u$可能等于$v$)和一个非空字符串$s$,问从$u$到$v$的简单路径上的所有边按照到$u$的距离从小到大的顺序排列后,边上的字符依次拼接形成的字符串中给定的串$s$出现了多少次。 $n,m\leq 10^5,\ 阅读全文
posted @ 2019-08-06 20:31 echo6342 阅读(320) 评论(2) 推荐(0)
该文被密码保护。
posted @ 2019-08-01 20:01 echo6342 阅读(9) 评论(0) 推荐(0)
摘要:题目大意 给出字符串$S(|S|\leq2\times10^5)$, $na(na\leq2\times 10^5)$个区间$[l_i,r_i]$表示$S_{l_i},S_{l_i+1},...,S_{r_i}$组成的这个$S$的子串是第$i$个A类串 $nb(nb\leq2\times 10^5) 阅读全文
posted @ 2019-04-10 16:25 echo6342 阅读(215) 评论(0) 推荐(0)
摘要:题目大意 “优秀的拆分”指将一个字符串拆分成AABB的形式 十次询问,每次给出一个字符串S($|S|\leq3 10^4$),求它的所有子串的优秀的拆分的方案数之和 题解 此题过于优秀,题解先坑着 代码 include include include include include include 阅读全文
posted @ 2019-03-06 08:27 echo6342 阅读(124) 评论(0) 推荐(0)
摘要:题目大意 $T$($T\leq10$)组询问 每组询问给出一个字符串$A$($|A|\leq10^4$),$n$($n\leq4$)个$A$的子串$B_1,B_2,B_3,...,B_n$($\forall i \in[1,n],|B_i|\leq10^3$) 如果$|B_i|=r l+1$且$B_ 阅读全文
posted @ 2019-02-21 10:36 echo6342 阅读(178) 评论(0) 推荐(0)
摘要:陈年老坑 题意大概是有n个字符串,要求出每一个字符串的所有子串(不包括空串)在所有字符串(包括自身)中出现次数不少于k的有多少个。n,k,字符串总长<=100000。 如果只有一个串的话,非常好办,直接把它建成后缀自动机就行了。 那么不止一个串该怎么办呢?想必是也可以用后缀自动机解决的。这时就要建出 阅读全文
posted @ 2018-08-17 14:04 echo6342 阅读(245) 评论(0) 推荐(0)
摘要:据说这些并不对劲的内容是《信息学奥赛一本通提高篇》的配套练习。 并不会讲Trie树。 1.poj1056-> 模板题。 2.bzoj1212-> 设dp[i]表示T长度为i的前缀能否被理解。这样,对于所有满足T[(x+1)...i]是一个字典中的单词的x,dp[i]|=dp[x]。 所以,就可以将所 阅读全文
posted @ 2018-07-18 14:53 echo6342 阅读(181) 评论(0) 推荐(0)
摘要:据说这些并不对劲的内容是《信息学奥赛一本通提高篇》的配套练习。 先感叹一句《信息学奥赛一本通提高篇》上对kmp的解释和matrix67的博客相似度99%(还抄错了),莫非matrix67藏在编者之中? 但这不重要,因为并不对劲的人不会对kmp作出任何解释。 课后练习: 1.bzoj1355-> 可以 阅读全文
posted @ 2018-07-17 15:14 echo6342 阅读(206) 评论(0) 推荐(0)
摘要:传送门-> 又称普及大会。 这题没什么好说的……后缀自动机裸题……并不对劲的人太菜了,之前照着标程逐行比对才过了这道题,前几天刚刚把这题一遍写对…… 这题的输出和某两点相同后缀的长度有关,那么把串反过来就和相同前缀的长度有关。建出后缀自动机后,发现点u代表了right[u]个dis[fa[u]+1] 阅读全文
posted @ 2018-04-02 15:37 echo6342 阅读(202) 评论(0) 推荐(0)
摘要:有些时候,后缀自动机并不能解决某些问题,或者解决很麻烦。这时就有各种神奇的字符串算法了。 manacher算法用来O(|S|)地求出字符串S的最长的回文子串的长度。这是怎么做到的呢? 并不对劲的暴力选手在刚见到求字符串S的最长的回文串的长度这个问题时,第一反应就是枚举每一个位置为回文串的对称轴,再暴 阅读全文
posted @ 2018-02-24 11:45 echo6342 阅读(230) 评论(0) 推荐(0)
摘要:题意是求一个字符串每个长度的子串出现次数最多的那个出现了多少次,也就是求每个到根的最长路的right集合最大值 。 先建后缀自动机,然后将每个前缀所在的集合的初值设为1,因为所有前缀的right集合肯定不相同,而且它们包含了所有位置。 接下来按到根的最长距离从大到小排序,将right集合累加到par 阅读全文
posted @ 2018-01-19 17:48 echo6342 阅读(164) 评论(0) 推荐(0)
摘要:题意是求多个串的lcs。 这也是道后缀自动机的模板题。对于任意一个字符串建后缀自动机,用其他串查询就行。对于后缀自动机的每个状态要额外记匹配到当前状态的最大长度。 和spoj1811的区别在于这道题不方便后缀数组做。当然,如果不嫌很多个串用奇怪的字符连起来麻烦、判断时常数极大的话,也可以试试。 字符 阅读全文
posted @ 2018-01-19 14:38 echo6342 阅读(214) 评论(0) 推荐(0)
摘要:题意是求两个字符串的lcs,两个串都只包含小写字母。 本题既可以用后缀自动机,又可以用后缀数组。 对于后缀自动机,就是一道模板题,直接对于一个字符串建后缀自动机再用另一个串查询就行。 对于后缀数组,其实也是一道模板题,但不是后缀数组的模板,而是用后缀数组求同一字符串的两个后缀的最长公共前缀的模板。 阅读全文
posted @ 2018-01-19 14:34 echo6342 阅读(269) 评论(0) 推荐(0)
摘要:后缀自动机是个好东西,代码短还很快。 这是因为根到一个节点的不同路径表示所有有某种相同性质的不同字符串。 假设对于字符串S建后缀自动机,以下名词的意思是: right(S的子串s):s在S中出现的位置的右端点的集合; 状态:有同样right集合的子串,某状态的right集合是指该状态的所有字符串的r 阅读全文
posted @ 2018-01-19 11:25 echo6342 阅读(1233) 评论(2) 推荐(1)
摘要:后缀数组sa(x)表示排序后第x位在排序前的位置。 这个东西的求法有两种,一种是倍增,时间复杂度o(n log n)或o(n log2n),另一种是用不知道什么方法做到的o(n)。 至于第二种方法是什么,并不对劲的人并不知道,所以只说倍增。 考虑正常地比较两个字符串,都是从头比较到尾: 那么,如果把 阅读全文
posted @ 2018-01-19 08:46 echo6342 阅读(201) 评论(0) 推荐(0)