題意:給乙個串,求出最長的那個相同的子串
這個題使用字尾自動機是,首先給每個節點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 這裡我們需要注意,對於陣列元素全為負的情況,由於不滿足上述的兩條結論,所...