比赛场次 | 596 |
---|---|
比赛名称 | CSP2023-J模拟赛 |
比赛状态 | 已结束比赛成绩 |
开始时间 | 2023-10-20 12:30:00 |
结束时间 | 2023-10-20 14:30:00 |
开放分组 | 全部用户 |
注释介绍 | 16中场次 |
题目名称 | 切分子串 |
---|---|
输入输出 | cutstring.in/out |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试点数 | 20 简单对比 |
用户 | 结果 | 时间 | 内存 | 得分 |
---|
给定两个字符串 $S, T$,求有多少种将 $T$ 拆分为两个子串 $t_1,t_2$ 的方法,满足 $t_1$ 是 $T$ 的一段非空前缀,$t_2$ 是 $T$ 的一段非空后缀,$|t_1|+|t_2|=|T|$,且 $t_1,t_2$ 均在 $S$ 中出现过。
以下注解默认字符串下标从 $1$ 开始。
$|S|$ 表示字符串 $S$ 的长度。
$t$ 为 $T$ 的一段非空前缀,当且仅当 $1\le |t|\le |T|$,且对于任意 $i\in [1, |t|]$,都满足 $t_i=T_i$。
$t$ 为 $T$ 的一段非空后缀,当且仅当 $1\le |t|\le |T|$,且对于任意 $i\in [1,|t|]$,都满足 $t_i=T_{|T|-i+1}$。
$s$ 在 $S$ 中出现过,当且仅当 $1\le |s|\le |S|$,且存在一个整数 $i\in [1,|S|-|s|+1]$,满足对于任意 $j\in [1, |s|]$,都有 $s_j = S_{i+j-1}$。
(仍然有问题,可以参考样例说明理解。)
两行,分别包含两个由小写字母组成的字符串,表示 $S, T$。
一个整数,表示答案。
abaaaabccaaac abaaac
4
$\rm abaaac$ 有五种拆分的方式:$\rm a+baaac$、$\rm ab+aaac$、$\rm aba+aac$、$\rm abaa+ac$、$\rm abaaa+c$。其中 $\rm baaac$ 没有在 $S$ 中出现过,所以第一种方案不合法。于是有 4 种合法的拆分。
对于 $100\%$ 的数据,满足 $1\le |S|\le 2000, 1\le |T|\le 150$。
璃月港算法竞赛 T1.