原题
首先conn(conn(s2,n2),m)=conn(s2,n2×m),因此我们可以找一个最大的m′满足conn(s2,m′)能由conn(s1,n1)生成,然后再通过m=⌊m′n2⌋得到答案m
我们可以知道m′≤|s1|×n1|s2|。为了提高效率,我们考虑二进制拆分m′=∑i=1t2pt,即把conn(s2,m′)看作conn(s2,2pt),conn(s2,2pt−1),...,conn(s2,2p1)个字符串一词拼接
我们考虑倍增,设jpi,j表示从s1的i位置开始,组成conn(s2,2j)要跳至少多少步,可以实现
最终复杂度O(|s|2log|s|n)
哦懂了懂了,等比数列求和。
(3) 到 (4) 是怎么转移的,大佬orz
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?