hihocoder1415 字尾陣列三 重複旋律3

2022-03-26 00:12:13 字數 1237 閱讀 1468

傳送門:

【題解】

考慮求出兩串合在一起(中間加分隔符)字尾陣列,就是要求任意在兩個串中的$i, j$,$\min\ (i \leq k \leq j)$的最大值。

考慮$i, j$一定是滿足$|i - j| = 1$且合法的時候最優。

詳情見:hihocoder「解題方法提示」

# include # include 

# include

# include

//# include

using

namespace

std;

typedef

long

long

ll;typedef

long

double

ld;typedef unsigned

long

long

ull;

const

int m = 5e5 + 10

;const

int mod = 1e9+7

;# define rank rank

intn, ans;

char

ch[m];

intsa[m], rank[m], h[m], t[m];

inttsa[m], cnta[m], cntb[m], a[m], b[m];

inline

void

getsa()

for (int len=1; rank[sa[n]] < n; len <<= 1

)

for (int i=1; i<=n; ++i) cnta[i] += cnta[i-1], cntb[i] += cntb[i-1

];

for (int i=n; i; --i) tsa[cntb[b[i]] --] =i;

for (int i=n; i; --i) sa[cnta[a[tsa[i]]] --] =tsa[i];

rank[sa[

1]] = 1

;

for (int i=2; i<=n; ++i)

}}

inline

void

getheight()

}int

main()

cout

<

return0;

}

view code

HihoCoder1415字尾陣列三 重複旋律3

時間限制 5000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi平時的一大興趣愛好就是演奏鋼琴。我們知道乙個 旋律被表示為長度為 n 的數構成的數列。小hi在練習過很多曲子以後發現很多作品中的旋律有共同的部分。旋律是一段連續的數列,如果同一段旋律在作品a和作品b中同時出現過,這段旋...

hihocoder 字尾陣列

時間限制 5000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi平時的一大興趣愛好就是演奏鋼琴。我們知道乙個 旋律被表示為長度為 n 的數構成的數列。小hi在練習過很多曲子以後發現很多作品自身包含一樣的旋律。旋律是一段連續的數列,相似的旋律在原數列可重疊。比如在1 2 3 2 3 ...

hihocoder1465 字尾自動機 迴圈同構

hihocoder1465 描述小hi平時的一大興趣愛好就是演奏鋼琴。我們知道一段 旋律可以被表示為一段數構成的數列。小hi發現旋律可以迴圈,每次把一段旋律裡面最前面乙個音換到最後面就成為了原旋律的 迴圈相似旋律 還可以對 迴圈相似旋律 進行相同的變換能繼續得到原串的 迴圈相似旋律 小hi對此產生了...