SP11482 COT4 - Count on a trie

题目描述

任务:维护两个字符串序列S和T,这两个集合在开始时都只有一个编号为1的空字符串。 你的程序需要支持以下操作: 1. 在S中的一个保证存在的字符串$S_i$的末尾添加一个字符$c$,然后将新的字符串插入S。如果集合中已经有n个字符串,那么这个新的字符串编号为$n+1$ 2. 在T中一个保证存在的字符串$T_i$的头部或尾部添加一个字符$c$,再按照上述规则插入T 3. 从T中取出两个字符串$T_i$,$T_j$,将这两个字符串拼接起来($T_i$在前),按上述规则插入T 4. 回答T中指定字符串$T_i$在S中指定字符串$S_i$的出现次数。如果$T_i$是个空串,应当输出0

输入格式

第一行一个整数Q表示操作次数 接下来Q行,每行有一个操作,操作的格式如下: - $1$ $S_i$ $c$ - $2$ $0$ $T_i$ $c$ 表示在头部插入字符 - $2$ $1$ $T_i$ $c$ 表示在尾部插入字符 - $3$ $T_i$ $T_j$ - $4$ $T_i$ $S_i$ 特别规定:操作1不超过100000次,操作3不超过30000次,操作4不超过100000次。总的操作次数Q不超过300000,字符集是{'a'..'z'}

输出格式

对于每个操作4,你需要输出一个整数表示答案,输出后换行