String
String
串串题
子序列:非连续取出一些字符
字串:取出原串一段区间字符
\(LIS\)(最长递增子序列)、\(LCS\)(最长公共子序列/子串)、\(LCP\)(最长公共前缀)、\(LPS\)(最长回文子序列/子串)、\(ED\)(最小编辑距离)
[省选模拟 2023] 日记(diary)
题意:
给定字符串 \(S\) 和 \(T\)
任取前缀 \(P\) 后缀 \(Q\) ,均包含空串,若组成的字符串包含 \(T\) 则称有意义
问所有前后缀组合有多少为有意义的
注:对于一个确定的有意义字符串,不管是由什么组合得到的,都只算一次
\(solution\)
为了保证不算重,我们考虑把一个有意义的字符串统计到最长后缀上
对于 \(T \in P\) 和 \(T \in Q\) 的情况单独计算即可
考虑 \(T \in P+Q\)
性质:
设 \(T\) 在 \(Q\) 中部分为 \(T_Q\)
则 \(T_Q\) 为 \(S\) 的某个前缀 \(P\) 与 \(T\) 的 \(LCS\) (字串)
此时 \(Q=LCS+S-P\)