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