poj3261(字尾陣列)

2021-09-09 03:03:41 字數 827 閱讀 9347

題意:給出一串長度為n的字元,再給出乙個k值,要你求重複次數大於等於k次的最長子串長度........

思路:其實也非常簡單,直接求出height值,然後將它分組,二分答案......結果就出來了.......

#include#include#include#includeusing namespace std;

#define maxx 110000

int wa[maxx],wb[maxx],wsf[maxx],wv[maxx];

int sa[maxx],rank[maxx],s[maxx],height[maxx];

struct node

str[maxx];

int cmp1(const node a,const node b)

else flag=1;

} return 0;

}int main()

sort(str,str+n,cmp1);

int j=1;

s[str[0].num]=j;

for(int i=1;i}

s[n]=0;

//for(int i=0;i//printf("%d ",s[i]);

getsa(s,sa,n+1,j+10);

getheight(s,sa,n);

int left=0,right=n,count=0,mid;

while(left<=right)

else right=mid-1;

} printf("%d\n",count);

} return 0;

}

POJ 3261 字尾陣列板子

題意 給你n個數字,要你找出出現超過k次子串的最長長度。做法 字尾陣列的板題吧。因為聽說比較常用就先留個板子。東西還是比較好理解的。這個題也不是很難。有比較難的我晚點再理解。總之就是用一段連續的 實現了對字尾串的排序。include include include includetypedef lo...

POJ POJ 3261 字尾陣列

可重疊的 k 次最長重複子串 給定乙個字串,求至少出現 k 次的最長重複子串,這 k 個子串可以重疊。演算法分析 這題的做法和上一題差不多,也是先二分答案,然後將字尾分成若干組。不 同的是,這裡要判斷的是有沒有乙個組的字尾個數不小於 k。如果有,那麼存在 k 個相同的子串滿足條件,否則不存在。這個做...

poj 3294 字尾陣列

題意 給定n個串,求最長的子串s,使得s為其中超過一半的串的公共子串。題解 字尾陣列,按height陣列分組,按sa陣列輸出。include include include using namespace std const int maxn 200000 int s maxn w maxn wa ...