Caliwa さんのブログ

ブログ

Subsequence 题解

2019-10-30 14:05:01 By Caliwa

如果最长次连续子串为[l,r],我们找到它的子序列的开头和结尾l1,r1,那么一定存在l1 < l或r1 > r。

如果 l1 < l,那么可以将r延伸至len。如果r1 > r,那么可以将l延伸至1。所以最长次连续子串一定是前缀或后缀。

最长次连续子串长度恰好为w不好求,我们改为求<=w的减去<=w-1的。

最长次连续子串长度<=w,则开头的len-w个字符互不相同且末尾的len-w个字符互不相同。

当len<=2w时,ans=P(k,len-w)^2 * k^(2w-len)。

当len>2w时,ans=P(k,len-2w) * P(k-(len-2w), w)^2。

在[w,w+k]中枚举len即可。

时间复杂度O(k)

コメント

No comments yet.

コメントを投稿

「@mike」を使うと mike さんに言及でき、mike さんの名前がハイライトされます。文字「@」を入力したい場合は「@@」と入力してください。

「/kel」と入力すると絵文字「kel」が使用できます。