【题解】Solution Set - NOIP2024集训Day58 字符串
【题解】Solution Set - NOIP2024集训Day58 字符串
https://www.becoder.com.cn/contest/5658
「CF1466G」Song of the Sirens
考虑对于
注意到
对于后面这一部分,我们直接
而前面这一部分,每一次
所以总时间复杂度为
22min
「QOJ9372」Prefix of Suffixes
显然把
现在的问题在于如何去维护后面这个
考虑从上一次的答案继承过来。(下面的
显然,
每次可以在
对于一个字符串
。 设当前的 border 长度为
。分讨:
:直接暴力跳就行了;
: 设
,则 为 的一个周期。 由 Weak Periodicity Lemma 的推论可以知道:
此时
的 border 集合中长度 的元素一定构成集合 。 详细证明可以见 这篇题解。
对于这些这些 border 她们一般会有一些良好的性质。比如这道题里面每个 border 的后一位均相同。
既然如此,我们把这些的
打包起来一起算。 然后下一次直接跳到
,而 。 综上,我们每次跳都能使位置减半,故能做
的时间复杂度。
26min
膜拜高手的神秘线性做法:https://www.becoder.com.cn/submission/2664090
前面部分大体差不多,只是后面算
自己实现了一下,发现那些
另外一份也是
题外话,来源似乎是:https://www.cnblogs.com/yyyyxh/p/KMP-Z.html
「CEOI2011」Matching
直接枚举每一个长度为
总感觉和 这道题 有点莫名相像。(实际上代码也是这道题改的。
7min
(上面写的有点模糊,具体可以见代码
「POI2011」Periodicity
首先答案的第一位一定是
感觉上来说有点像反悔贪心。
18min(没什么思路。
https://www.luogu.com.cn/article/2jepwn0f
注意 Weak Periodicity Lemma 及其推论。具体可见这篇题解。
(基于此,我们还可以对于任意前缀在
的时间复杂度内,找出其所有的 border(注意是找出不代表个数。
第四个情况的分讨是真的把我整破防了。
「POI2005」Sza-Template
首先一个必要条件是答案必须是原串 border。(对但是好像没什么用。
暴力一点,直接建出 sam,然后线段树合并求出每个等价类的的 endpos。
枚举每个等价类,比较 endpos 之间差的最大值和等价类中最长子串长度
11min(个人感觉没什么问题,实现虽然板但是比较多。
https://www.luogu.com.cn/record/184023802
对的但是被卡空间了。
https://www.luogu.com.cn/article/hd3hmymb
好像很有道理,可以直接 dp。
「POI2006」OKR-Periods of Words
做过。(但是当时好像没弄懂。
其实就是求最长循环节,也即长度 - 最短 border
而一般的 kmp 求的是最长 border。
我们再跑一遍,每次在
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话