傳送門:
【題解】
考慮求出兩串合在一起(中間加分隔符)字尾陣列,就是要求任意在兩個串中的$i, j$,$\min\ (i \leq k \leq j)$的最大值。
考慮$i, j$一定是滿足$|i - j| = 1$且合法的時候最優。
詳情見:hihocoder「解題方法提示」
# include # includeview code# 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;
}
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對此產生了...