2020牛客暑期多校训练营(第一场)A B-Suffix Array

2020牛客暑期多校训练营(第一场)A B-Suffix Array

题目链接:https://ac.nowcoder.com/acm/contest/5666/A

题意:给定一个由a和b组成的字符串,定义b数组为
在这里插入图片描述把字符串的每一个后缀转化为b数组进行字典序排序,输出最后的排序结果

关于这题的题解是一个后缀数组的结论在这里插入图片描述
只适用于两种字符的情况,刚好满足题意。

#include
using namespace std;
#define ll long long
const int maxn=2e5+100;
const ll mod=1e9+7;
int n,m,k,t;
char s[maxn];
int c[maxn],sa[maxn],rk[maxn],tmp[maxn];
int cmp(int x,int y){
    if(rk[x]!=rk[y])return rk[x]=0;i--){
            if(s[i]=='a'){
                if(a==n)c[i]=(n-a)%n;
                else c[i]=(n-a+i)%n;
                a=i;
            }
            else{
                if(b==n)c[i]=(n-b)%n;
                else c[i]=(n-b+i)%n;
                b=i;
            }
        }
        getsa(sa);
        for(int i=1;i

你可能感兴趣的:(2020牛客暑期多校训练营(第一场)A B-Suffix Array)