P3809 模版 字尾排序

2022-05-09 19:06:52 字數 1146 閱讀 7516

這是一道模版題。

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

輸入格式:

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

輸出格式:

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

輸入樣例#1:

ababa

輸出樣例#1:

5 3 1 4 2

n <= 10^6n<=10​6​​

看了一下午的字尾陣列

基數排序的思想我懂啊。,

倍增的思想我懂啊。。

字尾陣列的思想我也懂啊。。

為毛**一行都看不懂啊。。。。。。。。。。。。。。。。。。。。。。。

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7const

int maxn=1000001;8

void read(int &n)912

while(c>='

0'&&c<='9')

13 flag==1?n=-x:n=x;14}

15int tax[maxn];//

基數排序的輔助陣列

16int tp[maxn];//

基數排序的第二關鍵字

17int a[maxn];//

字串陣列

18int sa[maxn];//

19int

rak[maxn];

20int

n,m;

21void

qsort()

2228

int comp(int *f,int x,int y,int

l)29

32void

suffix_ar()

3348

for(int i=1;i<=n;i++)

49 printf("

%d "

,sa[i]);50}

51int

main()

52

P3809 模板 字尾排序 (字尾陣列sa )

題意 讀入乙個長度為 n的由大小寫英文本母或數字組成的字串,請把這個字串的所有非空字尾按字典序從小到大排序,然後按順序輸出字尾的第乙個字元在原串中的位置。位置編號為 1到 n。資料範圍 n 1e6 解法 題目要求的是排名第x的字尾在原串中的位置,其實就是字尾陣列中的sa陣列,算出來直接輸出就行了 c...

洛谷P3809 模板 字尾排序

這裡,僅僅介紹一下如何進行字串的字尾排序 stl 中的 sort 想得美 由於 sort 函式在比較字串大小時會將字串的每乙個字 符逐一比較,整體複雜度便是 o n 2logn 我們需要乙個更快的方法來對字尾排序.由於不太好講,我就不講啦qaq.code include include includ...

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

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