F - Strivore(组合数学)

题意

给定一字符串,求插入 k k k个字符得到的不同字符串数。

思路

隔板法,长度为 n n n的字符串当作 n n n个隔板,所以有 n + 1 n+1 n+1个空,枚举第一个空插入的字符数设为 i i i,则有 2 6 i 26^i 26i种,然后我们需要从剩下 n + k − i − 1 n+k-i-1 n+ki1个位置插入剩下 k − i k-i ki个字符,为了去重,这个 k − i k-i ki个字符不能与最近的左边的隔板相同,所以要乘上 C n + k − i − 1 k − i × 2 5 k − i C_{n+k-i-1}^{k-i}\times 25^{k-i} Cn+ki1ki×25ki

解释下: n + k n+k n+k是总位置数, i i i是已经插入的字符数, 1 1 1是第一个隔板。

所以 a n s = ∑ i = 0 k 2 6 i × C n + k − i − 1 k − i × 2 5 k − i ans=\sum\limits_{i=0}^k 26^i\times C_{n+k-i-1}^{k-i}\times 25^{k-i} ans=i=0k26i×Cn+ki1ki×25ki

时间复杂度: O ( k l o g ( M ) + N ) O(klog(M)+N) O(klog(M)+N)