luogu#P9997. [Ynoi2000] pmpkmp

[Ynoi2000] pmpkmp

题目描述

给定一棵树,树上的每条边上有一个字符。给定一个常数 XX

有两种操作,每次操作输入三个整数与一个字符串:

1 x y S:对于 xxyy 的有向简单路径上的边,将路径上的第 ii 条边上的字符替换为 SS 上的对应字符 SiS_i,保证这条 xxyy 之间路径的边数为 XX

2 x y S:查询 xxyy 构成的有向简单路径所形成的字符串上,SS 匹配的次数(这里的匹配即:将 SS 当做模式串,在这条路径构成的字符串上逐位置匹配。)例如:S=121S=121 ,路径上的字符串为 12121221212122,则匹配了2次,分别在第 [1,3][1,3] 处和[3,5][3,5] 处。

上述所有字符串 SS 的下标从 11 开始,保证每个输入的字符串长度均为 XX

输入格式

第一行三个以空格分隔的整数 n,m,Xn,m,X

之后一行包含 n1n-1 个数,第 ii 个数表示第 i+1i+1 个点的父亲 fi+1f_{i+1},保证每个点父亲的编号比这个点的编号小。

之后一行包含 n1n-1 个字符,第 ii 个字符表示第 i+1i+1 个点到父亲的边上的字符 ai+1a_{i+1}

之后 mm 行,每行输入以空格隔开的三个整数 opt,x,yopt,x,y 与一个长为 XX 的字符串 SS,表示一次操作。

输出格式

mm 行,每行一个整数,表示每次 22 操作的答案。

10 7 2
1 2 3 2 3 3 3 3 7
212111121
2 1 4 21
1 10 3 21
1 9 7 22
2 2 10 12
2 6 8 11
1 9 8 12
2 4 7 11
1
1
1
0

提示

Idea:nzhtl1477,Solution:ComeIntoPower&nzhtl1477&ccz181078,Code:ccz181078,Data:ccz181078

对于 10%10\% 的数据,满足 1n,m2501\le n,m\le 250

对于另外 10%10\% 的数据,不存在 1 操作。

对于另外 10%10\% 的数据,满足 X=1X=1

对于另外 10%10\% 的数据,满足 X3X\le 3

对于另外 10%10\% 的数据,满足 X20000X\ge 20000

对于另外 10%10\% 的数据,满足 fi=i1f_i=i-1

对于另外 10%10\% 的数据,满足 ai1a_i\le 1

对于另外 10%10\% 的数据,满足 1n,m2.5×1041\le n,m\le 2.5\times 10^4mX2.5×104mX\le 2.5\times 10^4

对于另外 10%10\% 的数据,满足 1n,m2.5×1051\le n,m\le 2.5\times 10^5mX2.5×105mX\le 2.5\times 10^5

对于 100%100\% 的数据,满足 1n,m,X5×1051\le n,m,X\le 5\times 10^5,字符集为 [1,9][1,9] 以内的整数,mX5×105mX\le 5\times 10^5