藍橋杯 2014 5 重複模式

2021-07-26 23:28:05 字數 909 閱讀 2867

作為 drd 的好朋友,技術男 atm 在 drd 生日時送給他乙個超長字串 s 。atm 要 drd 在其中找出乙個最長的字串 t ,使得 t 在 s 中至少出現了兩次,而他想說的秘密就藏在 t 中。

由於字串實在是太長了,drd 總是找不到合適的 t 。於是 drd 請你幫他找到這個 t 的長度。

【輸入格式】

一行。乙個字串,即題目中說的s 。

【輸出格式】

一行。乙個整數,表示最長的 t 的長度。

【樣例輸入】

ababa

【樣例輸出】

3「資料範圍」

對於 30% 的資料,s長度 <= 100

對於 60% 的資料,s長度 <= 8000

對於 100% 的資料,s長度 <= 500000

資源約定:

峰值記憶體消耗 < 256m

cpu消耗 < 1000ms

經典的longest repeated substring問題

使用字尾陣列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...