logo AlgoBeat OnlineJudge
登录 注册

#104023. [BZOJ 4023] YDC的字符串

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:无测试数据
上传者: 匿名

题目描述

YDC将给你 个字符串,并要求进行 次操作,每次操作形如一下四种:

  1. 在第 个字符串后面加上一个字符

  2. 询问在第 个操作过后的第 个字符串在当前的第 个字符串中的出现次数。

  3. 将第 个字符串改成第 个字符串。

  4. 读入一个字符串,询问它在 个串中每一个串中的出现次数。

这里的出现次数是特殊定义的,比如说询问串 的出现次数,那么询问时会给出参数 ,需要回答 有多少子串形如 (''号代表字符串连接),其中 是一个字符集中在第 中的字符。不同的询问所给出的 可能不同。

另外输入文件可能被加密。

输入格式

第一行三个整数数,,分别表示字符串个数,字符集大小,以及是否数据是否被加密,如果数据被加密,则 的值为 ,否则为

如果数据被加密,令 为当前操作之前最后一个输出的数(如果此前没有输出则 )。那么当前操作中读入的所有数均被加密成了原数异或上 (即假设原数为 ,你读入的数将是 )。

接下来 行,第 行将给出第 个字符串。字符串将按照如下格式给出:第一个数 表示字符串的长度,接下来 个整数,两两之间用空格隔开,表示每个位置上的字符是字符集中的第几个(从 开始标号)。

再读入一个数 ,即操作数。

接着 行,每行为一个操作的信息。每行第一个数为操作的类型。

如果是操作 ,那么接着两个整数 ,含义如题所示。

如果是操作 ,那么接着五个整数 ,其中 表示出现次数中所要求的 。(当 时表示所有操作进行之前)。

如果是操作 ,那么接着两个整数 ,含义如题所示。

如果是操作 ,那么接着两个整数 和一个字符串 ,字符串的格式和上述相同。

输出格式

对于每一个操作 ,你都需要输出他们的答案。你需要确保你的输出顺序与读入顺序一致。

样例

样例输入 #1

3 3 0
5 0 1 1 1 2
1 1
2 1 1
4
0 1 1
3 0 1 1 1
2 2 1
1 1 2 0 0 1

样例输出 #1

3 0 1
3

数据范围与提示

对于 的数据,

初始 个串的总长度不超过

操作 中读入的串总长度不超过

保证数据合法。

保证任意时刻出现的 个串均是一个长度不超过 的字符串的子串。

对于前 的数据,保证 ,初始n个串的总长度不超过 ,操作 中读入的串总长度不超过

对于前 的数据,保证所有的

对于前 的数据,保证数据没有被加密。