CF1207G Indie Album
题目描述
Mishka 最喜欢的实验独立乐队最近发布了一张新专辑!这张专辑中的歌曲名有一个共同的特点。每个名字 $s_i$ 都属于以下两种类型之一:
- $1~c$ —— 一个小写拉丁字母;
- $2~j~c$ —— 将第 $j$ 首歌的名字 $s_j$($1 \le j < i$)末尾添加一个小写拉丁字母得到。
歌曲编号从 $1$ 到 $n$。保证第一首歌一定是类型 $1$。
Vova 对新专辑很感兴趣,但他实在没有时间全部听完。因此他向 Mishka 提出了一些问题,以判断某首歌是否值得一听。问题的格式如下:
- $i~t$ —— 统计字符串 $t$ 在第 $i$ 首歌的名字 $s_i$ 中作为连续子串出现的次数,$t$ 只包含小写拉丁字母。
Mishka 并不质疑这些信息的用途,但他很难回答这些问题。你能帮 Mishka 回答所有 Vova 的问题吗?
输入格式
第一行包含一个整数 $n$($1 \le n \le 4 \cdot 10^5$),表示专辑中的歌曲数量。
接下来的 $n$ 行,每行描述第 $i$ 首歌的名字,格式如下:
- $1~c$ —— $s_i$ 是一个小写拉丁字母;
- $2~j~c$ —— $s_i$ 是将第 $j$ 首歌的名字 $s_j$ 末尾添加一个小写拉丁字母得到($1 \le j < i$)。
接下来一行包含一个整数 $m$($1 \le m \le 4 \cdot 10^5$),表示 Vova 的问题数量。
接下来的 $m$ 行,每行描述第 $j$ 个问题,格式如下:
- $i~t$($1 \le i \le n$,$1 \le |t| \le 4 \cdot 10^5$)—— 统计字符串 $t$ 在第 $i$ 首歌的名字 $s_i$ 中作为连续子串出现的次数,$t$ 只包含小写拉丁字母。
保证所有问题字符串 $t$ 的总长度不超过 $4 \cdot 10^5$。
输出格式
对于每个问题,输出一个整数,表示问题字符串 $t$ 在第 $i$ 首歌的名字 $s_i$ 中作为连续子串出现的次数。
说明/提示
第一个样例的歌曲名如下:
1. d
2. da
3. dad
4. dada
5. dadad
6. dadada
7. dadadad
8. dadadada
9. d
10. do
11. dok
12. doki
13. dokid
14. dokido
15. dokidok
16. dokidoki
17. do
18. dok
19. doki
20. dokidoki
因此,每个问题字符串的出现位置如下:
1. 字符串 "da" 在 "dadadada" 中出现在位置 $[1, 3, 5, 7]$;
2. 字符串 "dada" 在 "dadadada" 中出现在位置 $[1, 3, 5]$;
3. 字符串 "ada" 在 "dadadada" 中出现在位置 $[2, 4, 6]$;
4. 字符串 "dada" 在 "dadada" 中出现在位置 $[1, 3]$;
5. 字符串 "dada" 在 "dad" 中没有出现;
6. 字符串 "doki" 在 "doki" 中出现在位置 $[1]$;
7. 字符串 "ok" 在 "doki" 中出现在位置 $[2]$;
8. 字符串 "doki" 在 "dokidoki" 中出现在位置 $[1, 5]$;
9. 字符串 "doki" 在 "dokidok" 中出现在位置 $[1]$;
10. 字符串 "d" 在 "d" 中出现在位置 $[1]$;
11. 字符串 "a" 在 "d" 中没有出现;
12. 字符串 "doki" 在 "dokidoki" 中出现在位置 $[1, 5]$。
由 ChatGPT 4.1 翻译