1 条题解
-
0
题解
思路
长度不超过 的模式串在无限循环串 中出现,当且仅当它在 中出现。直接枚举 会产生指数复杂度;满分算法需要在构造第一份 时,同时描述第二份 在自动机上的行为。
做法
子任务 1:逐位置检查
枚举 个候选串 ,再枚举 的起点,并逐字符按下标模 比较。复杂度为 。
子任务 2:KMP 扫描
仍枚举 ,但对 做一次 KMP 匹配,把每个候选串的检查降到 。总复杂度为 。
子任务 3:双自动机状态 DP
为模式串 建 KMP 自动机,状态 表示已经匹配的前缀长度, 是吸收态。
枚举第一份 从状态 读完后到达的状态 。固定 后,令
表示已经确定 的前 位;第一台自动机从状态 出发到达 ,第二台自动机从状态 出发到达 的方案数。初值为
枚举下一位字符 ,两台自动机同时沿 转移。读完 位后,只有第一台恰好到达所枚举的 ,且第二台到达吸收态 的方案才合法,因此把
加入答案。
第一台处理第一份 ,第二台从第一份结束状态继续处理同一个 ,合起来恰好描述 ;枚举 后每个字符串只会进入唯一一组状态,不会重复计数。
复杂度
设 。满分算法时间复杂度为 ,空间复杂度为 。答案不超过 ,使用 64 位整数即可。
- 1
信息
- ID
- 1203
- 时间
- 3000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者