![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
drywwltu
这个作者很懒,什么都没留下…
展开
-
后缀数组求两个字串的最长公共前缀
lcp(sa[i],sa[j]=min(height[i+1...j])lcp(sa[i],sa[j] = min(height[i+1...j])lcp(sa[i],sa[j]=min(height[i+1...j])所以就是用rmq预处理一下即可int st[N + 5][25];void init(){ for(int i = 1;i <= n;i++)st[i][0] = height[i]; for(int i = 1;i <= 20;i++) {原创 2022-04-06 20:13:17 · 480 阅读 · 3 评论 -
后缀数组(dc3与倍增)
int n,m;char s[N];int sa[N]; // 排名第i位的是第几个后缀int x[N]; // 第i个元素的第一关键字int y[N]; // 第二关键字排名为i的数,第一关键字的位置int height[N]; // sa[i]与sa[i - 1]的最长公共前缀int rk[N]; // 第i个后缀的排名是多少int c[N]; // 桶void get_sa(){ for(int i = 1;i <= n;i++) ++c[x[i] = s[i]];原创 2021-10-08 20:15:21 · 169 阅读 · 4 评论