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個整數,表示答案...