poj 1743 字尾陣列 二分判定

2021-07-02 13:26:58 字數 680 閱讀 3062

#include#include#include#includeusing namespace std;

//sa[i] : 表示 排在第i位的字尾 起始下標

//rank[i] : 表示字尾 suffix(i)排在第幾

//height[i] : 表示 sa[i-1] 與 sa[i] 的lcp 值

//h[i]: 表示 suffix(i)與其排名前一位的 lcp值

const int n = int(2e5)+10;

int cmp(int *r,int a,int b,int l)

// 用於比較第一關鍵字與第二關鍵字,

// 比較特殊的地方是,預處理的時候,r[n]=0(小於前面出現過的字元)

int wa[n],wb[n],ws[n],wv[n];

int rank[n],height[n];

void da(int *r,int *sa,int n,int m)

int a[n],n;

int sa[n];

vectors[n];

bool check(int k)}}

return flag;

}int solve()

return res>=4?res+1:0;

}int main()

}

poj1743(字尾陣列 二分)

不可重疊最長重複子串 字尾陣列後,二分最長長度,在維護長度不小於mid時,判斷是否有兩個位置之間的差 mid,表示不重疊,由此更新l,r 方法 字串處理常用二分 字尾陣列常用分組 分組的本質就是這個組均包含長度為mid的子串,就是這個組的長度為mid的字首都相同 include include in...

poj 1743 字尾陣列

字尾陣列,求不可重疊最長重複字串。include include include include include include define maxd 21000 using namespace std int r maxd rank maxd height maxd int sa maxd wa...

POJ 1743 字尾陣列

這裡有一篇 總結了很多字尾陣列的用法,是 字尾陣列 處理字串的有力工具 羅穗騫 裡面又很多關於這個字尾陣列的具體用法,其中就包括這個不可重疊最長重複子串 這個題的意思就是求解不可重疊最長重複子串,但是這裡有乙個問題,他的串中也可以是相似的 每個數之間的差值相同的 那麼我們就可以利用這個差相同的性質,...