poj1743(字尾陣列 二分)

2021-07-16 07:02:08 字數 577 閱讀 2473

不可重疊最長重複子串

字尾陣列後,二分最長長度,在維護長度不小於mid時,判斷是否有兩個位置之間的差》mid,表示不重疊,由此更新l,r

方法:字串處理常用二分+字尾陣列常用分組

分組的本質就是這個組均包含長度為mid的子串,就是這個組的長度為mid的字首都相同

#include#include#include#include#includeusing namespace std;

const int n=20050;

const int inf=0x3f3f3f3f;

inline int read()

int n,sa[n],rank[n],height[n],s[n],t1[n],t2[n],c[n],p[n];

void clear()

void build_sa()

}void build_height()

return false;

}void debug()

printf("%d\n",ans?ans+1:0);

} return 0;

}

poj 1743 字尾陣列 二分判定

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 與其...

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

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