bzoj#P4023. YDC的字符串
YDC的字符串
题目描述
YDC将给你 个字符串,并要求进行 次操作,每次操作形如一下四种:
-
在第 个字符串后面加上一个字符 。
-
询问在第 个操作过后的第 个字符串在当前的第 个字符串中的出现次数。
-
将第 个字符串改成第 个字符串。
-
读入一个字符串,询问它在 个串中每一个串中的出现次数。
这里的出现次数是特殊定义的,比如说询问串 中 的出现次数,那么询问时会给出参数 ,需要回答 有多少子串形如 (''号代表字符串连接),其中 是一个字符集中在第 中的字符。不同的询问所给出的 可能不同。
另外输入文件可能被加密。
输入格式
第一行三个整数数,,分别表示字符串个数,字符集大小,以及是否数据是否被加密,如果数据被加密,则 的值为 ,否则为 。
如果数据被加密,令 为当前操作之前最后一个输出的数(如果此前没有输出则 )。那么当前操作中读入的所有数均被加密成了原数异或上 (即假设原数为 ,你读入的数将是 )。
接下来 行,第 行将给出第 个字符串。字符串将按照如下格式给出:第一个数 表示字符串的长度,接下来 个整数,两两之间用空格隔开,表示每个位置上的字符是字符集中的第几个(从 开始标号)。
再读入一个数 ,即操作数。
接着 行,每行为一个操作的信息。每行第一个数为操作的类型。
如果是操作 ,那么接着两个整数 ,含义如题所示。
如果是操作 ,那么接着五个整数 ,其中 表示出现次数中所要求的 。(当 时表示所有操作进行之前)。
如果是操作 ,那么接着两个整数 ,含义如题所示。
如果是操作 ,那么接着两个整数 和一个字符串 ,字符串的格式和上述相同。
输出格式
对于每一个操作 和 ,你都需要输出他们的答案。你需要确保你的输出顺序与读入顺序一致。
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
3 0 1
3
数据范围
对于 的数据,。
初始 个串的总长度不超过 。
操作 中读入的串总长度不超过 。
保证数据合法。
保证任意时刻出现的 个串均是一个长度不超过 的字符串的子串。
对于前 的数据,保证 ,初始n个串的总长度不超过 ,操作 中读入的串总长度不超过 。
对于前 的数据,保证所有的 。
对于前 的数据,保证数据没有被加密。