摘要: ##后缀数组 后缀S[i]:S[i]=S[i,|S|] 后缀排序:将所有后缀 S[i] 看作独立的串,放在一起按照字典序进行升序排序。 后缀排名 rk[i]rk[i] 表示后缀 S[i] 在后缀排序中的排名,即他是第几小的后缀。 后缀数组 sa[i]sa[i] 表示排名第 $ 阅读全文
posted @ 2022-10-31 22:16 I_N_V 阅读(50) 评论(0) 推荐(0) 编辑
摘要: ##前置知识 ###反转串 R(S) 一个字符串 S = S[1]S[2] · · · S[n] 其反串为R(S) = S[n]S[n − 1] · · · S[1]。 ###回文串性质 ####回文半径二分性 回文半径-1 等价于同时删掉回文串的首尾字母,依然是回文串。 ####回文串和Borde 阅读全文
posted @ 2022-10-27 20:53 I_N_V 阅读(101) 评论(0) 推荐(0) 编辑
摘要: ##背景 给出一个字典,和若干询问:多少个字典串在询问串中出现过。 即单串与多串的匹配问题。 #AC自动机 AC 自动机基于 Trie,将 KMP 的 Border 概念推广到多模式串上。 AC 自动机是一种离线型数据结构,即不支持增量添加新的字符串。 AC 自动机常用于将字符串询问类的问题进行离线 阅读全文
posted @ 2022-10-07 14:03 I_N_V 阅读(70) 评论(0) 推荐(0) 编辑
摘要: #Trie树 ##定义 Trie|Σ| $可以支持向 Trie 插入新字典串,删除字典串,查询某 阅读全文
posted @ 2022-10-06 15:09 I_N_V 阅读(28) 评论(0) 推荐(0) 编辑
摘要: ##Border 如果字符串 S 的同长度的前缀和后缀完全相同,即 Prefix[i]=Suffix[i] 则称此前缀(后缀)为一个 Border(根据语境,有时 Border 也指长度)。 特殊地,字符串本身也可以是它的 Border,具体是不是根据语境判断。 ##周期和循 阅读全文
posted @ 2022-09-29 22:20 I_N_V 阅读(30) 评论(0) 推荐(0) 编辑
摘要: ##大步小步算法(baby step giant step,BSGS) 是一种用来求解离散对数(即模意义下对数)的算法,即给出 axb(modm)a,b,m 的值(这里保证 am 互质,求解 m 既然保证了 am 互质,那么很容易联想 阅读全文
posted @ 2022-09-28 23:03 I_N_V 阅读(219) 评论(0) 推荐(0) 编辑
摘要: #虚树 讲解 ##模板 点击查看代码 struct Tree{ //原树 int tot,head[maxn],nx[maxn],to[maxn]; ll w[maxn]; void add(int x,int y,ll z){ to[++tot]=y;nx[tot]=head[x];head[x] 阅读全文
posted @ 2022-07-26 16:45 I_N_V 阅读(33) 评论(0) 推荐(0) 编辑
摘要: ##分治 分治作为一种思想在算法中被广泛使用,比如归并排序、线段树之类的算法都是使用了分治的思想。 除了这些算法的底层原理,分治单独拿出来运用的其中一种场景是作为一种统计类算法使用。 统计类问题一般指不带修改,静态查询类的问题。但是不同于静态查询问题,统计类问题一般要求“全查”,例如枚举所有的子区间 阅读全文
posted @ 2022-07-20 13:49 I_N_V 阅读(42) 评论(0) 推荐(0) 编辑
摘要: ##动态树 树上查询问题是指,给定一个图论中的树结构,需要对树上的子树或者链进行一系列增删改查的问题。 和序列问题中一般常说的“动态”和“静态”不同。 动态树问题一般指树结构发生改变。 *注意:一般对于纯换根(change root)操作,不视为是动态树问题。 #LCT结构 ###前置知识1:链分解 阅读全文
posted @ 2022-07-19 15:02 I_N_V 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 参考博客 ##子树类查询问题 dsu on tree和长链剖分都是解决子树类静态查询问题的统计类算法。 这类问题首先要是“子树”查询,并且是“静态”不带修改的。 注意某些问题其实不太有必要上dsu on tree,比如子树元素和,子树元素最大值之类的。(可合并区间信息) 例如子树众数,子树元素种类数 阅读全文
posted @ 2022-07-13 22:57 I_N_V 阅读(75) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示