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

2021-09-20 21:36:34 字數 597 閱讀 5137

p3809

思路:使用字尾陣列以o(nlogn)的複雜度將所有字尾陣列的字典序大小求出即可。

字尾陣列

#include#include#include#includeusing namespace std;

const int maxn = 4e6+10;

//ss陣列表示將要輸入的字串陣列

char ss[maxn];

//n表示字串ss的長度,

//m表示排名的範圍,就是基數排序中所需要的桶的數量,每次基數排序之後都會發生變化

//x表示字元的字典序的排名,一開始是0-127,之後隨著m的範圍不斷縮小

//y陣列表示第二關鍵字按照字典序排序後的字尾字串的編號

//c陣列是基數排序中的桶

//sa表示按照字典序排序,排名為i的字尾陣列的首字母的編號是sa[i]

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

void build_sa()

for(i=0;iprintf("\n");

}int main(void)

字尾陣列 洛谷P3809模板題

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

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

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

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

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