专栏文章

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

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

文章操作

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

当前评论
2 条
当前快照
1 份
快照标识符
@minf84bx
此快照首次捕获于
2025/12/02 01:26
3 个月前
此快照最后确认于
2025/12/02 01:26
3 个月前
查看原文
考虑是怎么查询一组 tt 的。对给定二元组分别建立 ACAM。记 sstt 上跳时跳到的点的序列为 p1,1..k,p2,1..kp_{1, 1..k}, p_{2, 1..k} 然后发现一个替换 ii 是可以的,当且仅当存在 jj 使得 p1,jp_{1,j}ii 在被替换串的 ACAM上对应点的子孙,且 p2,jp_{2, j}ii 在替换串的 ACAM 上的对应点的子孙。
你发现这个东西可能不是很好维护,因为它可能需要知道能不能覆盖完整个需要被替换的区间。我们记 dif(s,t)\operatorname{dif}(s, t) 表示从 ss 变为 tt 最小需要变化的区间。那么刚刚的情况可能会导致需要替换 [2,5][2,5] 但是扫到 j=7j=7 的时候有区间 [3,7][3, 7] 使得修改了 [3,5][3, 5]。于是你可以加一维长度表示需要满足 lenklen \ge k。这样是三维偏序,显然没有办法通过。
考虑怎么优化一下。这个 lenplen \ge p 也太丑了,它直接让我们的做法加了一维。发现这个东西修改的区间长度是固定的。因此对 si,0/1s_{i, 0/1}dif\operatorname{dif} 分类,这样就是变为要求 dif=dif\operatorname{dif}=\operatorname{dif}' 了。然后每次考虑 i[1,n]i \in [1, n] 的二元组就变成矩形加单点和了,可以扔到 dfn 序上扫描线。
时间复杂度:O(LΣ+(n+L)logL)O(L|\Sigma|+(n+L)\log L)

评论

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

正在加载评论...