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

2021-08-20 01:24:30 字數 799 閱讀 2380

題目描述

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

輸入輸出格式

輸入格式:

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

輸出格式:

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

輸入輸出樣例

輸入樣例#1:

ababa

輸出樣例#1:

5 3 1 4 2

說明n <= 10^6

分析:字尾陣列板題。

**:

#include 

#include

#include

const

int maxn=1e6+7;

using

namespace

std;

char s[maxn];

int len;

int x[maxn],y[maxn],sa[maxn],c[maxn];

//c是乙個桶,sa是字尾陣列,sa[i]表示排名第i的是第幾個串

//x表示rank,x[i]表示第i個串的排名,也是第一關鍵字

//y[i]表示第二關鍵字排名第i的是第幾個串

void getsa()

else x[sa[i]]=num;

}if (num>=len) break;

m=num;

}}int main()

洛谷P3809 模板 字尾排序

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

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

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

洛谷P3809 模板 字尾排序(倍增)

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