tyvj 1860 字尾陣列入門題

2021-06-26 05:49:49 字數 1005 閱讀 1870

描述 description

我們定義乙個字串的字尾suffix(i)表示從s[i]到s[length(s)]這段子串。

字尾陣列(suffix array)sa[i]中存放著乙個排列,滿足suffix(sa[i])你的任務就是求出sa和height這兩個陣列。字串長度<=200000

輸入格式 inputformat

一行,為描述中的字串(僅會出現小寫字母)

輸出格式 outputformat

共兩行,每行n個數,第一行為sa[i],第二行為height[i],其中每行的數均用空格隔開

aabaaaab

4 5 6 1 7 2 8 3

0 3 2 3 1 2 0 1

#include#include#include#define n 200005

/**suffix array

*倍增演算法 o(n*logn)

*待排序陣列長度為n,放在0~n-1中,在最後麵補乙個0

*build_sa( ,n+1, );//注意是n+1;

*getheight(,n);

*例如:

*n = 8;

*num = ;注意num最後一位為0,其他大於0

*rank = ;rank[0~n-1]為有效值,rank[n]必定為0無效值

*sa = ;sa[1~n]為有效值,sa[0]必定為n是無效值

*height= ;height[2~n]為有效值**/

using namespace std;

int s[n],t2[n],t1[n],sa[n],height[n],c[n],rank[n];

char str[n];

void build_sa(int *s,int n,int m)

}void getheight(int n)

{ int k=0,i,j;

for(i=0;i<=n;i++)

rank[sa[i]]=i;

for(i=0;i

tyvj 1860 字尾陣列

真 模板題 然而還是tle了,tyvj真是個毒瘤,輸出double什麼的就是 0.00000000,這些就tle2333 簡單的說一下本蒟蒻看了一天字尾陣列的收穫 這東西太神了,wcwc,收穫到我的膝蓋233,還是不太理解這個神奇的東西 鑑於本人太虛,只看了一下倍增,照著黃學長扒了乙個板子23333...

Tyvj P1860 字尾陣列 字尾陣列模板題

tyvj傳送門 輸入格式 一行,為描述中的字串 僅會出現小寫字母 輸出格式 共兩行,每行n個數,第一行為sa i 第二行為height i 其中每行的數均用空格隔開 測試樣例1 輸入aabaaaab 輸出4 5 6 1 7 2 8 3 0 3 2 3 1 2 0 1 sol 發現了自己程式的乙個bu...

TyvjP1860 字尾陣列

描述 我們定義乙個字串的字尾suffix i 表示從s i 到s length s 這段子串。字尾陣列 suffix array sa i 中存放著乙個排列,滿足suffix sa i suffix sa i 1 按照字典序方式比較 定義height i 表示suffix sa i 與suffix ...