UOJ35 字尾陣列(模板)

2022-05-08 07:57:09 字數 1587 閱讀 4114

這是一道模板題。

讀入乙個長度為 n

'>n

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

'>1

1 到 n

'>n

n。除此之外為了進一步證明你確實有給字尾排序的超能力,請另外輸出 n−1

'>n−1

n−1 個整數分別表示排序後相鄰字尾的最長公共字首的長度。

一行乙個長度為 n

'>n

n 的僅包含小寫英文本母的字串。

第一行 n

'>n

n 個整數,第 i

'>i

i 個整數表示排名為 i

'>i

i 的字尾的第乙個字元在原串中的位置。

第二行 n−1

'>n−1

n−1 個整數,第 i

'>i

i 個整數表示排名為 i

'>i

i 和排名為 i+1

'>i+1

i+1 的字尾的最長公共字首的長度。

input

ababa
output
5 3 1 4 2

1 3 0 2

explanation

排序後結果為:

aaba

ababa

bababa

正解:字尾陣列

解題報告:

模板,第一次交才發現我原來的模板是個萎的,太恐怖了。。。

1

//it is made by jump~

2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include

13#ifdef win32

14#define ot "%i64d"

15#else

16#define ot "%lld"

17#endif

18using

namespace

std;

19 typedef long

long

ll;20

const

int maxn = 300011;21

char

ch[maxn];

22int

n,m,tot;

23int

wa[maxn],wb[maxn],wv[maxn],c[maxn];

24int

rank[maxn],height[maxn];

25int

sa[maxn];

2627 inline int

getint()

2836

37 inline void da(int

m)55}56

57 inline void

calheight()

6263 inline void

work()

7273

intmain()

74

Uoj 35 字尾排序 字尾陣列

統計 描述 提交 自定義測試 這是一道模板題。讀入乙個長度為 nn 的由小寫英文本母組成的字串,請把這個字串的所有非空字尾按字典序從小到大排序,然後按順序輸出字尾的第乙個字元在原串中的位置。位置編號為 11 到 nn。除此之外為了進一步證明你確實有給字尾排序的超能力,請另外輸出 n 1n 1 個整數...

UOJ 35 字尾排序

這是一道模板題。讀入乙個長度為 n 的由小寫英文本母組成的字串,請把這個字串的所有非空字尾按字典序從小到大排序,然後按順序輸出字尾的第乙個字元在原串中的位置。位置編號為 1 到 n。除此之外為了進一步證明你確實有給字尾排序的超能力,請另外輸出 n 1 個整數分別表示排序後相鄰字尾的最長公共字首的長度...

字尾陣列 模板

char s n 陣列的長度要為兩倍的 int n n全域性變數為字元陣列的長度的 int sa n 2 high n 2 rank n 2 tmp n 2 top n 2 void makesa void lcp int main gets s int len strlen s s len get...