首页 > 其他分享 >NFLS2022 CSP 模拟赛 21 A

NFLS2022 CSP 模拟赛 21 A

时间:2022-11-24 17:46:51浏览次数:66  
标签:NFLS2022 21 nxt 后缀 最长 长度 CSP sim 前缀

Link

题解

不会 T1/hanx

首先对 \(S\) 串 KMP 一波。

假如我们已经填好了 \(T\) 的前 \(i\) 个字符,并设 \(T_{1\sim i}\) 与 \(S\) 的相同长度前缀相等的最长后缀长度为 \(j\),那么当且仅当 \(S\) 的长度为 \(j,nxt_j,nxt_{nxt_j},……\) 的前缀与 \(T_{1\sim i}\) 的对应长度相同的后缀相等。

考虑确定了 \(T_{i+1}\) 之后,\(j\) 肯定会发生变化。我们设 \(to_{j,c}\) 为 \(S\) 与 \(T\) 的前缀的最长公共前后缀的长度为 \(j\) 时,在末尾新加一个字符 \(c\) 后,最长公共前后缀长度变成了什么,预处理出来即可。

知道了最长公共前后缀,我们也可以轻松算出会使 \(T_{1\sim i}\) 的哪些后缀的 \(\text{LCP}\) 加一,这个也可以和 \(to_{j,c}\) 一起预处理,然后就可以直接 dp 了。

时间复杂度:\(O(26nm)\)

AC code

http://www.nfls.com.cn:10611/submission/225869

标签:NFLS2022,21,nxt,后缀,最长,长度,CSP,sim,前缀
From: https://www.cnblogs.com/CCPSDCGK/p/16922638.html

相关文章