這是一道模板題。
讀入乙個長度為 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
ababaoutput
5 3 1 4 2explanation1 3 0 2
排序後結果為:
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...