字尾陣列練習3 連續重複子串

2021-09-26 08:35:32 字數 1203 閱讀 5642

比前面兩個練習題更加簡單,只要知道height陣列的性質就可以了

poj2774

時間限制: 1 sec  記憶體限制: 128 mb

提交: 101  解決: 57

[提交] [狀態] [討論版] [命題人:admin]

題目描述

不多說,這道題的思路我會引用羅穗騫大佬的**當中的講解

簡單來說,就是把兩個字串合併,然後用get_he找到他們的最長重複子串,但是要判斷是sa是分別屬於兩個不同的子串裡面的

**實現

1

/*先用個分隔符將兩個字串連線起來,再用字尾陣列求出height陣列的值,

2找出乙個height值最大並且i與i-1的sa值分別在兩串字元中就好

*/3 #include4 #include5 #include6 #include7 #include8 #include9

using

namespace

std;

10int sa[200020],rank[200020],rsort[200020

];11

int cnt[200020],pos[200020],height[200020

];12

bool cmp(int x,int y,int k)

13char a[200020],b[200020

];14

void get_sa(int n,int

m) 15

39 m=p;40}

41 a[0]=0; sa[0]=0;42

}43void get_he(int

n)4453}

54int

main()

55

tristan code

字尾陣列練習3 連續重複子串

比前面兩個練習題更加簡單,只要知道height陣列的性質就可以了 poj2774 時間限制 1 sec 記憶體限制 128 mb 提交 101 解決 57 提交 狀態 討論版 命題人 admin 題目描述 不多說,這道題的思路我會引用羅穗騫大佬的 當中的講解 簡單來說,就是把兩個字串合併,然後用ge...

最長重複子串(字尾陣列)

時間限制 1000 ms 記憶體限制 3000 kb 描述 對於乙個字串s1,其中s2是他的乙個子串 長度嚴格小於s1長度 如果s2在s1 現次數超過1次,那麼s2就是乙個重複子串,現在的要求是給定s1,請求出他的最長重複子串 如果有多個長度一樣的最長子串,請輸入字典序最小那個串 比如bbbaaac...

POJ 2406 字尾陣列 求連續重複子串

解法一 dc3求字尾 因為我用的是紅書的字尾模板,所以是倍增求的,所以這個dc3是用這個部落格的模板 這個也是勉強過的,時間為 2829ms了,寫得不機智就會超了。include include define n 2000005 define f x x 3 x 3 1?0 tb define g ...