hdu 3553 Just a String (字尾數組)
題意:很簡單,問一個字元串的第k大的子串是誰。
解題思路:字尾數組。先預處理一遍,把能算的都算出來。将字尾按sa排序,假如我們知道答案在那個區間範圍内了(假設為[l,r]),那麼我們算下這個區間内的lcp的最小值(設最小值的位置為mid,大小為x),如果x*(r-l+1)>=k,那麼,答案就是這個區間的lcp的最小值的某一部分(具體是哪一部分,畫個圖稍微算下就出來了)。如果x * ( r - l + 1 ) < k 那麼我們分兩種情況考慮,如果[l,mid]區間範圍内的字元串總數大于等于k,那麼把區間範圍縮小到[l,mid],否則範圍縮小到[mid+1,r]。一點點的逼近答案就可以了。