10.5 字符串统计

Posted venividivici

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10.5 字符串统计相关的知识,希望对你有一定的参考价值。

题意

定义一个对字符串的操作为删去该串的任意一个连续子串,并把剩下的部分拼接成一个字符串

给定一个字符串\(S\),请计算有多少个长度为\(N\)的字符串,无论怎样对其进行操作都无法使它成为字符串\(S\)


解法

补集转换一下,答案就是总的字符串个数\(26^N\)减去不合法的字符串个数

不合法的字符串可以看成是在\(S\)串的内部加入连续\(N-S\)个字符形成的

那么,对于每一个\(S\)串中可插入的空位(共\(S+1\)个),我们都能插入\(N-S\)个字符,形成的字符串就有\((S+1)\times 26^N-S\)个。但显然这样形成的字符串是有重复的,考虑不重不漏的计算

可以把长度为\(N-S\)的字符串在\(S\)中的添加视为窗口式的滑动,那么一开始字符串在\(S\)的右端,此时的方案为\(26^N-S\),窗口向左滑一格,把\(S\)的最右边的元素挤到整个字符串的右端

此时的方案是同样\(26^N-S\),但这里的方案与前面的方案有重合。我们钦定加进的字符串的第一个元素不同,(因为如果相同,我们可以发现这一层的窗口是被上一层的窗口完全包含的,也就是代表的方案也完全相同)那么也就能计算出与前面的方案没有重合的新方案\(25\times 26^N-S-1\)

可以发现对于每一个位置与前面的没有重合的方案都是\(25\times 26^N-S-1\)

那么最后的答案即为\(26^N-26^N-|S|-25\times 26^N-|S|-1\times |S|\)


以上是关于10.5 字符串统计的主要内容,如果未能解决你的问题,请参考以下文章

10.6之补10.5

2016弱校联萌十一专场10.5

arcgis10.5没有字符标记符号

学习数据分析的第一选择!10.5G的R语言教程资料限时免费领取

逆波兰表达式(RPN)算法简单实现

正式班D16