作為 drd 的好朋友,技術男 atm 在 drd 生日時送給他乙個超長字串 s 。atm 要 drd 在其中找出乙個最長的字串 t ,使得 t 在 s 中至少出現了兩次,而他想說的秘密就藏在 t 中。經典的longest repeated substring問題由於字串實在是太長了,drd 總是找不到合適的 t 。於是 drd 請你幫他找到這個 t 的長度。
【輸入格式】
一行。乙個字串,即題目中說的s 。
【輸出格式】
一行。乙個整數,表示最長的 t 的長度。
【樣例輸入】
ababa
【樣例輸出】
3「資料範圍」
對於 30% 的資料,s長度 <= 100
對於 60% 的資料,s長度 <= 8000
對於 100% 的資料,s長度 <= 500000
資源約定:
峰值記憶體消耗 < 256m
cpu消耗 < 1000ms
使用字尾陣列suffix array解決
參考《演算法競賽入門經典—訓練指南》上的**,採用nlog(n)(基數排序)才行
如使用nlog(n)*log(n) (快速排序),則8,9,10三個測試點超時1s
#include using namespace std;
const int maxn = 1e6;
char s[maxn];
int sa[maxn], t[maxn], t2[maxn], c[maxn], n, rk[maxn], height[maxn];
void build_sa(int m)
}void getheight()
}int main()
1227 重複的子串模式
1227.重複的子串模式 中文english 給你乙個非空字串,判斷它能否通過重複它的某乙個子串若干次 兩次及以上 得到。字串由小寫字母組成,並且它的長度不會超過10000。樣例1 輸入 abab 輸出 true 說明 可以由它的子串 ab 重複兩次得到。樣例2 輸入 aba 輸出 false樣例3...
113 重複的DNA序列
題目描述 所有 dna 由一系列縮寫為 a,c,g 和 t 的核苷酸組成,例如 acgaattccg 在研究 dna 時,識別 dna 中的重複序列有時會對研究非常有幫助。編寫乙個函式來查詢 dna 分子中所有出現超過一次的10個字母長的序列 子串 示例 輸入 s aaaaacccccaaaaacc...
sqlserver2000重複作業排程
在跟發電廠做輔助決策系統時,涉及到電量結算問題。電廠方只提供實時的每分鐘的電力資料,我方要根據電力 來算出每一時段的電量 以一刻鐘為一時段,一天96時段 涉及到兩個問題 1.從電廠端oracle資料庫中把yxrtdata實時表的資料採集到本地sqlserver,並作為歷史表儲存 2.在本地處理裡yx...