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

摘要:【LG1368】工艺 题面 "洛谷" 题解 好套路的一道题。。。 我们倍长这个字符串,然后我们要查询的串就为这个倍长过后串的长度$n$一个子串,要求字典序最小 ~~然后就可以非常愉快地后缀排序了~~ 后缀的话,直接往每个状态的字典序最小的后继状态跑就行了。 代码 阅读全文
posted @ 2019-03-25 22:44 heyujun 阅读(179) 评论(0) 推荐(0) 编辑
摘要:【BZOJ4560】[NOI2016]优秀的拆分 题面 "bzoj" "洛谷" 题解 考虑一个形如$AABB$的串是由两个形如$AA$的串拼起来的 那么我们设 $f[i]$:以位置$i$为结尾的形如$AA$串的个数 $g[i]$:以位置$i$为开头的形如$AA$串的个数 $$ \therefore 阅读全文
posted @ 2019-02-10 19:37 heyujun 阅读(851) 评论(0) 推荐(1) 编辑
摘要:【BZOJ2754】[SCOI2012]喵星球上的点名 题面 "bzoj" "洛谷" 题解 这题有各种神仙做法啊,什么暴力$AC$自动机、$SAM$等等五花八门 我这个蒟蒻在这里提供一种复杂度正确且常数小的做法。 根据后缀数组经典套路, 我们用一个未出现过的字符将所有串连接起来求一边$SA$(不算询 阅读全文
posted @ 2019-01-22 20:40 heyujun 阅读(284) 评论(1) 推荐(0) 编辑
摘要:【BZOJ4566】[HAOI2016]找相同字符 题面 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数。两个方案不同当且仅当这两个子串中有一个位置不同。 其中$1\leq|s1|,|s2|\leq n$ 题解 其实和 "这题" 差不多。 根据后缀数组常用套路,将将$s1 阅读全文
posted @ 2019-01-22 20:19 heyujun 阅读(263) 评论(0) 推荐(0) 编辑
摘要:【BZOJ3238】[AHOI2013]差异 题面 给定字符串$S$,令$T_i$表示以它从第$i$个字符开始的后缀。求 $$ \sum_{1\leq i include include include include include using namespace std; inline int 阅读全文
posted @ 2019-01-22 20:02 heyujun 阅读(361) 评论(1) 推荐(0) 编辑
摘要:【BZOJ4698】[SDOI2008]Sandy的卡片 题面 "flag" 倒了。 "bzoj" "洛谷" 题解 首先题目的区间加很丑对吧, 将每个串差分一下,就可以转化为 求: 给定$N$个串,求他们的最长公共子串。 怎么办呢,按照后缀数组常用套路 我们用不同的未曾用过的字符将这些串连接起来 我 阅读全文
posted @ 2019-01-22 19:21 heyujun 阅读(332) 评论(2) 推荐(0) 编辑
摘要:后缀数组(SA)总结 这个东西鸽了好久了,今天补一下 概念 后缀数组$SA$是什么东西? 它是记录一个字符串每个后缀的字典序的数组 $sa[i]$:表示排名为$i$的后缀是哪一个。 $rnk[i]$:可以理解为$SA$数组的逆,记录后缀$i$的排名是多少,$rnk[SA[i]]=i$。 $lcp[i 阅读全文
posted @ 2019-01-21 19:38 heyujun 阅读(1489) 评论(8) 推荐(6) 编辑