题目名称 3923. 切分子串
输入输出 cutstring.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 20
题目来源 Gravataryrtiop 于2023-10-18加入
开放分组 全部用户
提交状态
分类标签
模拟 字符串
分享题解
通过:8, 提交:18, 通过率:44.44%
GravatarUGFK 100 0.000 s 0.00 MiB C++
Gravatar蜀山鸭梨大 100 0.000 s 0.00 MiB C++
Gravatar张通 100 0.000 s 0.00 MiB C++
Gravatar高一女王wfr 100 0.000 s 0.00 MiB C++
Gravatar李奇文 100 0.000 s 0.00 MiB C++
GravatarUntitled 100 0.000 s 0.00 MiB C++
GravatarLixj 100 0.000 s 0.00 MiB C++
Gravatar高一女王wfr 100 0.059 s 3.34 MiB C++
GravatarUGFK 0 0.000 s 0.00 MiB C++
Gravatar高一女王wfr 0 0.000 s 0.00 MiB C++
本题关联比赛
CSP2023-J模拟赛
CSP2023-J模拟赛
关于 切分子串 的近10条评论(全部评论)

3923. 切分子串

★   输入文件:cutstring.in   输出文件:cutstring.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

给定两个字符串 $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.