這是一道模版題。
讀入乙個長度為 nn 的由大小寫英文本母或數字組成的字串,請把這個字串的所有非空字尾按字典序從小到大排序,然後按順序輸出字尾的第乙個字元在原串中的位置。位置編號為 11 到 nn。
輸入格式:
一行乙個長度為 nn 的僅包含大小寫英文本母或數字的字串。
輸出格式:
一行,共n個整數,表示答案。
輸入樣例#1:
ababa
輸出樣例#1:
5 3 1 4 2
n <= 10^6n<=106
看了一下午的字尾陣列
基數排序的思想我懂啊。,
倍增的思想我懂啊。。
字尾陣列的思想我也懂啊。。
為毛**一行都看不懂啊。。。。。。。。。。。。。。。。。。。。。。。
1 #include2 #include3 #include4 #include5 #include6using
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...