#1436. [L3-1] Dracu-Riot!

内存限制:512 MiB 时间限制:3000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: wyhao

题目描述

海上都市——一座特别的岛屿,作为特别行政区,是个风俗和赌博合法化的欢乐都市。但实际上,是政府唯一认可吸血鬼所居住的场所。

佑斗和好友直太第一天登岛就遇见了绑架事件,阴差阳错下,佑斗感染了吸血鬼病毒,变成了吸血鬼,只能被迫留在岛上。

按照规定,吸血鬼必须为岛上的服务业进行有偿劳动,所以佑斗加入了风纪班,负责岛上的安保工作。

image

最近,佑斗、美羽、梓三人缴获一批走私品,被他们的上司兵馬要求在出入境名单中检索一些嫌疑人,以便观察其是否有某一时段内多次出入境行为。

不幸的是,海关的系统近期在维护,所以出现一个很大的问题:导出的名单只显示输入的字母,并且分隔符消失了。

更不幸的是,兵馬告诉他们,由于系统出现了问题,可能需要对记录中的某个子串进行修改。

三人没有办法,他们找到你,希望你能写一个程序帮助他们完成这个任务。

形式化地,系统记录名单 SS 和要查找的名字 TiT_i 将是由小写字母组成的字符串。字符串下标从 11 开始标号。

接下来有 QQ 次操作,操作分为两种:

1 li ri pi1\ l_i\ r_i\ p_i:你需要计算 TpiT_{p_i} 串在 SS 串的子串 S[li:ri]S[l_i:r_i] 内出现了多少次。

2 li ri si2\ l_i\ r_i\ s_i:修改 SS 串的子串 S[li:ri]S[l_i:r_i]sis_i

特别地,类似梓的名字 azusaazusazusazusa 算作出现 33 次,即字符串发生重叠也要重复计算。

输入格式

11 行是一个由小写字母组成的字符串 SS,作为系统记录名单。

22 行是一个正整数 DD,表示嫌疑人名单的长度。

接下来 DD 行每行是一个由小写字母组成的字符串 TiT_i,作为要查找的姓名。

D+3D+3 行是一个正整数 QQ,表示接下来要进行 QQ 次操作。

接下来 QQ 行对操作进行描述:

对于 11 操作,形如 1 li ri pi1\ l_i\ r_i\ p_i,你需要计算 TpiT_{p_i} 串在 SS 串的子串 S[li:ri]S[l_i:r_i] 内出现了多少次。

对于 22 操作,形如 2 li ri si2\ l_i\ r_i\ s_i,修改 SS 串的子串 S[li:ri]S[l_i:r_i]sis_i

输出格式

对于每次 11 操作,输出 TpiT_{p_i} 串出现次数。

样例

输入

namanamazunamanamakonamanameko
4
am
name
august
key
10
1 1 30 2
2 5 10 mamama
2 7 12 nanami
1 6 18 1
2 15 21 banamam
2 25 30 meguru
1 2 27 1
2 4 20 yoshinosaysciallo
1 5 30 1
1 1 30 4

输出

1
2
7
2
0

数据范围与提示

对于 30%30\% 的数据:

S,Q103|S|,Q\le 10^3si10|s_i|\le 10D=1D=1

对于 100%100\% 的数据:

S,Q105|S|,Q\le 10^5Ti20|T_i|\le 20D500D\le 500

siS|s_i|\le |S|,对于 22 操作,si106\sum |s_i|\le 10^6

1liriS1\le l_i\le r_i\le |S|si=rili+1|s_i|=r_i-l_i+11piD1\le p_i\le D

保证 S,Ti,siS,T_i,s_i 由小写字母组成,字符串长度至少为 11

保证 TiT_i 互不相同。