浅谈“随机按键指定串”问题
Preface主要作为培训时该类问题的总结。Introduction这类问题的主要形式是有m mm个不同的字符按键进行n nn次或无限次随机敲打。询问n nn个字符中出现长度为k kk的指定串S SS的概率。或求无限次敲打中S SS出现位置的期望。首先这个问题是与 KMP 有关的我们知道B o r d e r \rm{Border}Border串是原串的前后缀那么从感性的角度理解B o r d e r \rm{Border}Border越长S SS越容易在匹配失败时恢复更长的前缀使得出现概率更大、位置期望更靠前。对于问题“n nn个字符中出现长度为k kk的指定串S SS的概率”题目Mivik 的标题这个问题实际上很古老B o r d e r \rm{Border}Border理论中有B o r d e r \rm{Border}Border串可分为O ( log ⁡ k ) O(\log k)O(logk)个等差数列的描述根据推出的 DP 式子使用该理论与半在线卷积、高斯消元、多项式求逆、生成函数等操作便可以有效地求出。在该题目的题解区已有丰富的解答这里不多赘言。而对于问题“无限次敲打中S SS出现位置的期望”理论上可以运用上面的结论在无限求和中使用泰勒等多项式合并的方法。但实际上对于无限问题如果是收敛的期望递推式并不会过于丑陋。记f i f_ifi​为S SS第i ii位到S SS最后一个字符出现的期望根据 KMP 自动机有这么一个函数δ ( i , c ) { i 1 , c s i 1 δ ( π i , c ) , e l s e \delta(i,c)\begin{cases} i1, cs_{i1} \\ \delta(\pi_i,c), else \end{cases}δ(i,c){i1,δ(πi​,c),​csi1​else​其中π i \pi_iπi​即位置i ii的B o r d e r \rm{Border}Border长度。所以把f i f_ifi​拆分可能的转移易得f i 1 m ∑ c f δ ( i , c ) 1 f_i\frac{1}{m}\sum_{c} f_{\delta(i,c)}1fi​m1​c∑​fδ(i,c)​1我们对比f π i f_{\pi_i}fπi​​f π i 1 m ∑ c f δ ( π i , c ) 1 f_{\pi_i}\frac{1}{m}\sum_{c} f_{\delta(\pi_i,c)}1fπi​​m1​c∑​fδ(πi​,c)​1做一次容斥f i f π i − 1 m f δ ( π i , s i 1 ) 1 m f i 1 f_if_{\pi_i}-\frac{1}{m}f_{\delta(\pi_i,s_{i1})}\frac{1}{m}f_{i1}fi​fπi​​−m1​fδ(πi​,si1​)​m1​fi1​f i f_ifi​作为期望的定义是倒着走的我们为了方便处理设g i f i − f 0 g_if_i-f_0gi​fi​−f0​那么显然g 0 0 g_00g0​0。而由前面f 0 1 m ∑ c f δ ( 0 , c ) 1 1 m f 1 m − 1 m f 0 1 f_0\frac{1}{m}\sum_{c} f_{\delta(0,c)}1\frac{1}{m}f_1\frac{m-1}{m}f_01f0​m1​c∑​fδ(0,c)​1m1​f1​mm−1​f0​1化简记f 1 − f 0 − m f_1-f_0-mf1​−f0​−m也就是g 1 − m g_1-mg1​−m。把g i g_igi​代入容斥后的式子g i f 0 g π i f 0 − 1 m ( g δ ( π i , s i 1 ) f 0 ) 1 m ( g i 1 f 0 ) g_if_0g_{\pi_i}f_0-\frac{1}{m}(g_{\delta(\pi_i,s_{i1})}f_0)\frac{1}{m}(g_{i1}f_0)gi​f0​gπi​​f0​−m1​(gδ(πi​,si1​)​f0​)m1​(gi1​f0​)不难发现f 0 f_0f0​可以消掉g i 1 m ( g i − g π i ) g δ ( π i , s i 1 ) g_{i1}m(g_i-g_{\pi_i})g_{\delta(\pi_i,s_{i1})}gi1​m(gi​−gπi​​)gδ(πi​,si1​)​B o r d e r \rm{Border}Border串预处理δ \deltaδ函数是O ( log ⁡ k ) O(\log k)O(logk)的于是这就是一个普通的O ( n log ⁡ k ) O(n \log k)O(nlogk)递推式子。我们要的位置期望就是f 0 f_0f0​也就是f k − g k f_k-g_kfk​−gk​f k f_kfk​已经代表S SS的最后一个位置了敲打次数期望为0 00则f 0 − g k f_0-g_kf0​−gk​。这样我们避免了复杂的数学推演只使用了简单的期望递推本问题就此告段落。一个古老的类似问题[CTSC2006] 歌唱王国希望本文章对你有帮助。

相关新闻

Altium Designer 16快捷键全解析:从基础操作到高级定制,提升PCB设计效率

Altium Designer 16快捷键全解析:从基础操作到高级定制,提升PCB设计效率

1. 项目概述:为什么AD16的快捷键值得你花时间整理?如果你和我一样,常年泡在Altium Designer 16(后面简称AD16)里画板子,那你肯定有过这样的体验:鼠标点得手腕发酸,眼睛在密密麻麻的菜…

2026/8/1 3:47:22阅读更多 →
MH2457开发板FreeRTOS与LVGL嵌入式GUI移植实战指南

MH2457开发板FreeRTOS与LVGL嵌入式GUI移植实战指南

这次我们来看一个嵌入式开发板的实际项目——MH2457开发板搭配7寸电容触摸屏,运行FreeRTOS实时操作系统和LVGL图形库。这个组合在嵌入式GUI开发领域很常见,但实际移植和调试过程中会遇到各种问题,特别是触摸屏驱动、内存管理和任务调度这些关…

2026/8/1 3:47:22阅读更多 →
VC++运行库安装指南:从原理到实践,解决DLL缺失问题

VC++运行库安装指南:从原理到实践,解决DLL缺失问题

1. 项目概述:为什么VC运行库是“系统基石”?如果你在电脑上安装过大型软件、游戏,或者运行某些专业工具时,突然弹出一个“无法启动此程序,因为计算机中丢失 VCRUNTIME140.dll”之类的错误,那你已经和VC运行…

2026/8/1 3:45:21阅读更多 →
告别“小助手”!乐享、擎天再升级,联想让AI“下场干活”

告别“小助手”!乐享、擎天再升级,联想让AI“下场干活”

作者:毛烁大模型在企业中的应用,正在进入价值验证阶段。MIT NANDA发布的《The GenAI Divide》报告显示,在被调查的企业级生成式AI项目中,、约95%的企业级GenAI试点尚未形成可衡量的损益影响,只有约5%的集成式AI试点跨过…

2026/8/1 5:09:54阅读更多 →
【新闻】687个!本周艾为官网新增6个应用方案

【新闻】687个!本周艾为官网新增6个应用方案

艾为官网应用方案数量稳步推进!目前官网应用中心场景适配框图数量已有687个,端侧AI方案框图:56个,本周新增框图6个 (食物残渣处理器、智能集成灶、电动轮椅、电动护理床、移位机、智能矫正镜)。艾为官网:www.awinic.co…

2026/8/1 5:09:54阅读更多 →
西门子840D/828D数控系统数据采集方案:OPC UA、NC变量与PLC通讯实战

西门子840D/828D数控系统数据采集方案:OPC UA、NC变量与PLC通讯实战

1. 项目概述:为什么我们需要一套完整的西门子机床数据采集方案? 在制造业的车间里,设备轰鸣,刀具飞转,每一台数控机床都是价值不菲的生产力核心。但你是否遇到过这样的困境:生产主管跑来问,那台…

2026/8/1 5:09:54阅读更多 →
安卓开发必备:adb logcat日志抓取从入门到实战精解

安卓开发必备:adb logcat日志抓取从入门到实战精解

1. 项目概述:为什么我们需要掌握 logcat 日志抓取?如果你是一名安卓开发者、测试工程师,或者只是一个喜欢折腾自己手机、电视盒子、智能手表的极客,那么“adb logcat”这个命令对你来说,绝对是一个绕不开的宝藏工具。它…

2026/8/1 5:09:54阅读更多 →
护网2026红队AI实战渗透教程:全链路落地技巧与避坑方案

护网2026红队AI实战渗透教程:全链路落地技巧与避坑方案

2026年政企护网攻防演练中,AI渗透已经从辅助工具变成红队核心作战能力。市面多数文章只讲AI渗透概念,极少公开一线护网落地细节。本文基于本年度真实护网作战经验,从零拆解AI在信息收集、社工钓鱼、载荷绕过、内网横向、AI资产专项攻击的全流…

2026/8/1 5:09:54阅读更多 →
航空发动机混排涡扇建模与非设计点计算实战

航空发动机混排涡扇建模与非设计点计算实战

1. 航空发动机混排涡扇模型改造实战十年前我刚接触航空发动机建模时,第一次看到"非设计点循环计算"这个术语就头皮发麻。直到参与某型发动机数字孪生项目后,才真正理解这串专业名词背后的工程意义——它本质上是要解决发动机在非理想工况下的&…

2026/8/1 5:07:54阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →