POJ 2774 字尾陣列基礎題

2022-03-04 11:59:18 字數 1085 閱讀 8486

poj 2774

題意:求兩個字串的最長公共子串。

總結:搞了半天還是不太理解,看著大神部落格強行敲的。。而且還看到有hash+二分做的。

//

poj-2774

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#pragma comment(linker, "/stack:102400000,102400000")

#define f(i,a,b) for (int i=a;i#define ff(i,a,b) for (int i=a;i<=b;i++)

#define mes(a,b) memset(a,b,sizeof(a))

#define inf 0x3f3f3f3ftypedef

long

long

ll;const

int n = 3e5+10

;char

str[n], str1[n];

//這些應該可以做模板了。。

intwa[n], wb[n], wsf[n], wv[n], sa[n];

intrankn[n], height[n], s[n];

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

k)void getsa(int *r, int *sa, int n, intm)}

void getheight(int *r, intn)}

intmain()

printf(

"%d\n

", maxn);

}return0;

}

poj 2774 字尾陣列

include include define debug ifdef debug define debug printf va args else define debug endif define maxn 200004 define min a,b a b a b int wx maxn wy ...

POJ 2774 字尾陣列

題意 求兩個串的最長公共子串 思路 在求出height陣列之後,再把sa陣列區分出來,只要其中乙個sa i s i 1 陣列是屬於第一串,s i 1 s i 屬於第二串,那麼我們可以求得其最大值,之所以可以這樣做,是因為sa陣列已經對字串按字典序排好序了 include include includ...

poj 2774 字尾陣列模板

求兩個字串的最長公共子串。將兩個字串連線為乙個新字串,並計算字尾陣列和高度陣列lcp。然後檢查字尾陣列中所有相鄰的字尾,其中字尾分別屬於第一和第二個字串的lcp的最大值就是答案。include include include include include include include inclu...