首页 > 其他分享 >SA后缀数组学习笔记

SA后缀数组学习笔记

时间:2023-05-27 17:12:51浏览次数:48  
标签:后缀 笔记 基数排序 位数 数组 SA 倍增 sa

什么是后缀数组

后缀数组主要是用来处理字符串的,分为两种方法:倍增法以及 DC3,但由于倍增法通俗易懂,码量小,常数小,所以今天这篇文章我就只介绍倍增法(不可能是因为我不会 DC3)

前缀知识

No.1 基数排序

跟桶排序差不了多少,思想就是:将整数按位数切割成不同的数字,然后按每个位数分别比较。按每个位数从低位数到高位数分别比较。

然后在后缀数组中,我们就借用了这个思想来处理一个二元组,这之后我们还会接着讲。

No.2 文章中的数组介绍

\(sa_i\):排名为i的后缀的位置

\(rak_i\):从第i个位置开始的后缀的排名,
下文为了叙述方便,把从第i个位置开
始的后缀简称为后缀i
\(tp_i\):基数排序的第二关键字,意义与sa一样
,即第二关键字排名为i的后缀的位置

\(tag_i\):i号元素出现了多少次。辅助基数排序。

标签:后缀,笔记,基数排序,位数,数组,SA,倍增,sa
From: https://www.cnblogs.com/pdpdzaa/p/17436993.html

相关文章

  • Git 学习笔记
    笔记来源视频链接:黑马程序员Git全套教程,完整的git项目管理工具教程,一套精通git_哔哩哔哩_bilibiliGit基础命令操作(本地仓库)配置用户名和Email右键打开GitBash:gitconfig--globaluser.name"用户名"gitconfig--globaluser.email"邮箱地址"Git结构1.创建本地......
  • tracer ftrace笔记(17)——atrace命令抓trace
    一、atrace命令解析1.帮助信息#atrace-h用法:usage:atrace[options][categories...]选项包括:-aappname为逗号分隔的cmdlines列表启用应用程序级跟踪;*是匹配任何进程的通配符-bN使用大小为NKB的跟踪缓冲区-c......
  • 最小生成树学习笔记
    什么是最小生成树一个图中可能存在多条相连的边,我们从一个图中挑出一些边生成一棵树(树就是指一个无向连通图不包含回路(连通图中不存在环))。这仅仅是生成一棵树,还未满足最小,当图中每条边都存在权重时,这时候我们从图中生成一棵树(n-1条边)时,生成这棵树的总代价就是每条边......
  • 思考-关于纸质还是电子笔记
    原因有长期用纸质记录规划每天生活的习惯,但是由于长期使用键盘打字,在使用纸笔写字的过程中,写字速度有点慢,手写速度更不上大脑的思考速度;其次,手部手写过程中出现不适感,而在打字的过程中,虽然有打错字的概率,但总体上还行。纸质的好处写作的内容较为随意写作的方式、风格较为......
  • openeuler安装 w版opensack
    1.基础环境与openstack源虚拟机的话建议开启硬件虚拟化systemctldisable--nowfirewalldsetenforce0sed-i's/^SELINUX=.*/SELINUX=disabled/g'/etc/selinux/configecho"192.168.112.125$HOSTNAME">>/etc/hostsyumlist|grep-iopenstackyum-yi......
  • raft笔记
    目的:一致性算法,允许一组机器作为一个一致的组来工作,这些组可以承受某些成员的故障,提高可用性领导选举,日志同步,快照,集群变动复制状态机用于解决分布式系统中的各种容错问题,会出现共识算法共识和复制状态机通过保持复制日志的一致性raft是一种日志复制算法Raft通过首先选举一个......
  • Cassandra中的MerkleTree反熵机制
    构建MerkleTreeCassandra是一个分布式数据库系统,它使用Merkle树来实现数据一致性和数据完整性的验证。在Cassandra中,每个节点都维护着自己的数据副本。为了确保数据的一致性和完整性,Cassandra使用Merkle树进行验证。Merkle树是一种树状结构,由哈希值构成,用于对数据块进......
  • [USACO06NOV]Bad Hair Day S(栈)
    题目大意:按顺序给出n头牛的身高,每头牛可以看见它到后出现的牛中第一头身高高过(大于等于)它的牛之间的所有牛,求所有牛总共能看到的牛数解题思路:从后往前遍历查看每头牛能看到的牛数,每次进行的比较数量的太多,但我们可以用栈来存储关键信息以减少不必要的比较代码如下:#i......
  • DAY15笔记及补充
    今日默写:1.强制类型转换2.Scanner 类的使用步骤3.基本if选择结构4.if-else选择结构5.多重if选择结构6.嵌套if选择结构7.switch选择结构8.手写main函数9.自动类型转换10.描述下switch和if多重分支的区别得分:100分补充:1.ifelse分支中存在一定的顺序问题,就是从上至下范围应该越......
  • ResultSet和satement和preparedStatement
    1. ResultSet[结果集]   8271.1 基本介绍1.表示数据库结果集的数据表,通常通过执行查询数据库的语生成2.ResultSet对象保持一个光标指向其当前的数据行。最初, 光标位于第一行之前3. next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false,因此可以在whil......