首页 > 其他分享 >后缀数组(SA)

后缀数组(SA)

时间:2023-05-02 16:22:25浏览次数:38  
标签:排序 后缀 数组 讲解 SA 大佬

在看完洛谷大佬的

最详细讲解

以后,我还是不能说没有完全不懂,所以干脆自己写一篇后缀数组详解,造福后人(QAQ)
本篇讲解引用例子和图片来自某不知名视频资源的大佬,如有知道大佬姓名,会立刻回来标注的。


开始之前,先要了解这些数组是干嘛的,一定要记好。
image

一下以长度为8的字符串aabaaaab为例子,进行讲解
(好的,直接面向代码开始讲解)

点击查看代码
  //按第一个字母排序
  for(i=1;i<=n;i++)c[x[i]=s[i]]++;
  for(i=1;i<=m;i++)c[i]+=c[i-1];
  for(i=n;i;i--)sa[c[x[i]]--]=i;

//按第一个字母排序 for(i=1;i<=n;i++)c[x[i]=s[i]]++; for(i=1;i<=m;i++)c[i]+=c[i-1]; for(i=n;i;i--)sa[c[x[i]]--]=i;

标签:排序,后缀,数组,讲解,SA,大佬
From: https://www.cnblogs.com/alloverzyt/p/17367847.html

相关文章

  • Luogu P2973 [USACO10HOL]Driving Out the Piggies G
    发现答案其实与这个点炸弹经过的次数有关,因为只要知道了这个点炸弹经过次数\(w\),这个点答案就能算出:\(w\times\frac{p}{q}\)就想到设\(f_u\)为\(u\)点炸弹经过次数\(u\)点经过次数便可以由有连边的\(v\)点推来,要满足\(v\)点此时炸弹没爆炸且\(deg_v\)条边中选了\(......
  • 后缀数组(SA)
    后缀数组SuffixArray时间复杂度\(O(n\logn)\)主要涉及到三个数组:\(sa[i]\)表示后缀数组,排名第\(i\)个的后缀编号\(rk[i]\)表示第\(i\)个后缀的排名\(height[i]\)表示排名为\(i\)和\(i-1\)的后缀的lcp(最长公共前缀)易得:\(sa[rk[i]]=rk[sa[i]]=i\)求后缀数组get_sa倍增实......
  • 分别使用SAD匹配,NCC匹配,SSD匹配三种算法提取双目图像的深度信息
    1.算法仿真效果matlab2022a仿真结果如下:     2.算法涉及理论知识概要       深度学习的蓬勃发展得益于大规模有标注的数据驱动,有监督学习(supervisedlearning)推动深度模型向着性能越来越高的方向发展。但是,大量的标注数据往往需要付出巨大的人力成本,越来......
  • Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple ERROR: Could not fi
    命令行输入:pipinstallmediapipe报错:Lookinginindexes:https://pypi.tuna.tsinghua.edu.cn/simpleERROR:Couldnotfindaversionthatsatisfiestherequirementmediapipe(fromversions:none)ERROR:Nomatchingdistributionfoundformediapipe查看了网......
  • RabbitMQ安装Delayed Message 插件
    在官网:https://www.rabbitmq.com/community-plugins.html点击:下载好之后就是一个解压好的文件:然后在将这个文件复制到rabiitmq/plugins里面:cp/Users/sixcandy/Downloads/rabbitmq_delayed_message_exchange-3.10.2.ez/opt/homebrew/Cellar/rabbitmq/3.10.2/plugins1进入rabi......
  • 代码笔记27 numpy和pytorch中的多维数组切片
    原来还可以用数组切数组,我算是长见识了。不多说了,直接上代码应该可以明白importnumpyasnpxyz=np.arange(36).reshape(3,4,3)B,N,C=xyz.shapefarthest=np.random.randint(0,N,size=B)#torch.randint(0,N,(B,),dtype=torch.long)#初始时随机选择一点(B......
  • 更改歌曲后缀-代码备忘录
    packagecom.java1234.todo;importjava.io.*;importjava.util.HashMap;importjava.util.Objects;importjava.util.Properties;importjava.util.regex.Matcher;importjava.util.regex.Pattern;/***//沈亦晨-爱人错过(小提琴版).flac//留下**//......
  • springSecurity过滤器之AnonymousAuthenticationFilter
    SpringSecurity提供了匿名登录功能,让我们不登录也能访问。比如/anoy路径及子路径都能匿名访问,配置如下:@ConfigurationpublicclassMySecurityConfigextendsWebSecurityConfigurerAdapter{@Overrideprotectedvoidconfigure(HttpSecurityhttp)throwsException......
  • c99之 柔性数组成员
    在讲述柔性数组成员之前,首先要介绍一下不完整类型(incompletetype)。不完整类型是这样一种类型,它缺乏足够的信息例如长度去描述一个完整的对象。6.2.5 Typesincompletetypes(typesthatdescribeobjectsbutlackinformationneededtodeterminetheirsizes).C与C++关于不完......
  • rust中动态数组的引用和切片
    真逆天这个b语法1切片与String切片类似,动态数组Vec也能切片,通过&取切片般如果Vec是可变的话,那么他的切片就是不可变的/只读的注意:切片和&Vec是不同的类型,后者仅仅是Vec的引用,并可以通过解引用直接获取Vecfnmain(){letmutv=vec![1,2,3];letslice=&......