专栏文章
题解:P14363 [CSP-S 2025] 谐音替换 / replace(暂无数据)
P14363题解参与者 4已保存评论 5
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @minf7qlr
- 此快照首次捕获于
- 2025/12/02 01:26 3 个月前
- 此快照最后确认于
- 2025/12/02 01:26 3 个月前
这个唐诗被题面和 B 性质误导,认为可能有多个匹配位置,又认为 AC 自动机不可过,获得了 0pts 的好成绩,你也来试试吧。
AC自动机。
赛后显然注意到每组 在每个 上只有一个贡献位置(要求除匹配位置外相等,故 在去除 LCP、LCS 后应于 去除 LCP、LCS 后相等)。
我们直接定义两个字符串二元组相等当且仅当 ,用这个定义对 建立 AC 自动机,拿 在上面匹配,字符集为 ,主席树显然卡不过去(说不定暴力跳
fail 然后记忆化可以水过)。然后我们发现问题是这么做字符集太大了,而AC自动机在保证字符集大小时复杂度只依赖于左、右端点的单调性,所以我们对 分别建立 AC 自动机,匹配时同时在两个自动机上匹配对应串,由于
border 具有传递性,保证当前匹配的点长度相同即可……吗?
注意到这样可能会导致两个点状态不一样,所以还要求一次并,是假的。
尝试结合这两个做法,将两次匹配放在同一个自动机上,但是不是同时而是先后进行。具体地,对做法1中的一条转移边 ,将其拆解为两条边 ,字符集减小到 ,长度翻倍,复杂度除掉一个 。
匹配时注意不能在拆出来的节点计算贡献。
时空复杂度 。
这个做法貌似和直接插 一样?
题外话:原本是想用可持久化分块维护做法 1 的 数组,感觉会炸空间,然后发现这个根号正好等价于把转移分成两层……
相关推荐
评论
共 5 条评论,欢迎与作者交流。
正在加载评论...