专栏文章

题解:P14363 [CSP-S 2025] 谐音替换 / replace(暂无数据)

P14363题解参与者 2已保存评论 2

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
2 条
当前快照
1 份
快照标识符
@minfeqxg
此快照首次捕获于
2025/12/02 01:31
3 个月前
此快照最后确认于
2025/12/02 01:31
3 个月前
查看原文
首先把每对串分成「LCP + ? + LCS」 的形式,注意判掉 s1=s2s_1=s_2t1t2|t_1|\not=|t_2|
我们想要对每个 tt 的 ? 找有多少 ss 满足:
  1. ? 完全相同。
  2. ss 的 LCP/LCS 分别是 tt 的后缀/前缀。
第一条哈希排序一下就好了,时间复杂度 O(nlogn)\mathcal O(n\log n)
第二条有两种处理方法:
法一
可以把 s,ts,t 都变成「LCP + # + LCS」,然后就是 AC 自动机板子题了。
注意普通 AC 自动机因为有算重的可能性,需要跳 fail 清标记,但这里不可能算重,所以只要预处理的时候加上对应 fail 的个数就好了。
这部分时间复杂度线性。
法二
ss 的 LCP 反串和 LCS 分别建 Trie,tt 要查询自己祖先公共多少对。考虑两棵 Trie 的 dfs 序构成的平面,一对 ss 罩着两个子树对应一个矩形,查询 tt 对应一个点,这样就是二维数点了。
这部分时间复杂度一只老哥。
代码(法一)等公示。

评论

2 条评论,欢迎与作者交流。

正在加载评论...