字尾陣列之尋找最大相同子串 poj3216

2021-09-25 15:42:06 字數 595 閱讀 3475

題意:給乙個串,求出最長的那個相同的子串

這個題使用字尾自動機是,首先給每個節點siz賦值為1 ,然後遍歷,更新最大的長度。如果有某個串的個數不為1 ,就更新長度,

使用字尾陣列是:求出height,然後對答案二分,列舉答案,在判斷答案是否滿足條件

字尾陣列**:

#include#include#includeusing namespace std;

const int m=100050;

int d[m],x[m],y[m],sa[m],height[m],rk[m],n,k,m,b[m],c[m];

void get_sa()

int k=0;

for (int i=1; i<=n; ++i) rk[sa[i]]=i;

for (int i=1; i<=n; ++i)

}bool judge(int x)

if(num+1>=k)

} return false;

}int main()else

} printf("%d\n",ans);

} return 0;

}

1166不相同的子串的個數 字尾陣列

題目描述 給定乙個字串,求不相同的子串的個數。輸入 輸入資料第一行為乙個數字 t,表示資料組數。t 10 接下來的 t 行,每行乙個由小寫或大寫字母構成的字串,字串長度不超過 50000。輸出 對於每組資料,輸出一行乙個數字,表示答案。樣例輸入 4 abbabba dabddkababa bacab...

最長重複子串(字尾陣列)

時間限制 1000 ms 記憶體限制 3000 kb 描述 對於乙個字串s1,其中s2是他的乙個子串 長度嚴格小於s1長度 如果s2在s1 現次數超過1次,那麼s2就是乙個重複子串,現在的要求是給定s1,請求出他的最長重複子串 如果有多個長度一樣的最長子串,請輸入字典序最小那個串 比如bbbaaac...

求陣列中和最大的子陣列(陣列中和最大的子串)

某公司面試題,回來找的答案這個是最好的。int kadane const int array,size t length,unsigned int left,unsigned int right else return max 這裡我們需要注意,對於陣列元素全為負的情況,由於不滿足上述的兩條結論,所...