字尾陣列 洛谷P3809模板題

2022-05-29 04:00:10 字數 1210 閱讀 8471

這是一道模板題。

讀入乙個長度為 n n n 的由大小寫英文本母或數字組成的字串,請把這個字串的所有非空字尾按字典序從小到大排序,然後按順序輸出字尾的第乙個字元在原串中的位置。位置編號為 1 1 1 到 n n n。

輸入格式:

一行乙個長度為 n n n 的僅包含大小寫英文本母或數字的字串。

輸出格式:

一行,共n個整數,表示答案。

輸入樣例#1:複製

ababa

輸出樣例#1:複製

5 3 1 4 2

n<=106n <= 10^6n<=106

題解

倍增演算法的字尾陣列

表示並不會dc3

**

//

by 減維

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define db double

#define inf 1<<30

#define maxn 1000005

#define eps 1e-8

using

namespace

std;

intn,m,a[maxn],c[maxn],sa[maxn],tp[maxn],rnk[maxn],hei[maxn];

char

s[maxn];

void

srt()

bool cmp(int *f,int x,int y,int w)

void

getsa()

int k=0

,j;

for(int i=1;i<=n;hei[rnk[i++]]=k)

for(k=k?k-1:k,j=sa[rnk[i]-1];a[j+k]==a[i+k];k++);

}int

main()

洛谷P3809(字尾陣列模板題)

p3809 思路 使用字尾陣列以o nlogn 的複雜度將所有字尾陣列的字典序大小求出即可。字尾陣列 include include include includeusing namespace std const int maxn 4e6 10 ss陣列表示將要輸入的字串陣列 char ss ma...

洛谷 P3809 模板 字尾排序 字尾陣列

題目描述 讀入乙個長度為 n n 的由大小寫英文本母或數字組成的字串,請把這個字串的所有非空字尾按字典序從小到大排序,然後按順序輸出字尾的第乙個字元在原串中的位置。位置編號為 1 1 到 n n 輸入輸出格式 輸入格式 一行乙個長度為 n n 的僅包含大小寫英文本母或數字的字串。輸出格式 一行,共n...

洛谷P3809 字尾排序 字尾陣列 模板

這是一道模板題。讀入乙個長度為 nn 的由大小寫英文本母或數字組成的字串,請把這個字串的所有非空字尾按字典序從小到大排序,然後按順序輸出字尾的第乙個字元在原串中的位置。位置編號為 11 到 nn。輸入格式 一行乙個長度為 nn 的僅包含大小寫英文本母或數字的字串。輸出格式 一行,共n個整數,表示答案...