#P11730. [集训队互测 2015] Sone2

    ID: 13098 远端评测题 2000ms 256MiB 尝试: 0 已通过: 0 显示难度NOI/NOI+/CTS 上传者: 标签>字符串2015集训队互测

[集训队互测 2015] Sone2

题目描述

Sone 有一只调皮的宠物 Jie。

某天,Sone 在研究串匹配问题。

在他出门的时候在桌子上放了两个字符串:一个长度为 nn 的字符串 aa 和一个长度为 mm 的字符串 bb。设 Σ\Sigma 为字符串的字符集大小,即字符串中每个字符都是 11 到 Σ\Sigma 之间的整数。

在走之前,Sone 严肃地警告 Jie:你不准动 bb 串,那个串很重要!

于是,Jie 就只能调戏 aa 串。

设 a[l:r]a[l:r] 表示 aa 串第 ll 个字符到第 rr 个字符之间的子串。特别地,当 l>rl>r 时,a[l:r]a[l:r] 表示空串。

Jie 定义了一个关于 ss 串和 tt 串的函数:

f(s,t)=max⁡s[1:k]=t[1:k]kf(s,t)=\max_{s[1:k]=t[1:k]}k

即 ss 和 tt 的最长公共前缀的长度。

Jie 又定义了一个关于 aa 串和 bb 串的函数 F(a,b)F(a,b)。F(a,b)F(a,b) 的值是一个二元组 (x,y)(x,y),其中 xx 为:

$$x=\max_{i=1}^{\lvert a \rvert} f(a[i:\lvert a \rvert],b)$$

而 yy 表示满足 f(a[i:∣a∣],b)=xf(a[i:\lvert a \rvert], b) = x 的 ii 的个数。

本来问题很简单的,但由于 Jie 太调皮了,一共有 qq 个时刻,每个时刻他会有四种行为:

  1. 他会修改 aa 串的某一位,然后询问 F(a,b)F(a,b)。(操作后 aa 不会还原)
  2. 他会选择 aa 串中的一个子串 cc,询问 F(c,b)F(c,b)。
  3. 他会选择 bb 串的两个后缀,并询问这两个后缀的最长公共前缀的长度。
  4. 他会选择 bb 串的两个子串 s1,s2s_1,s_2,并询问把 s1s_1 和 s2s_2 串联起来得到的字符串是否是 bb 串的子串,是的话输出 yes,否则输出 no(不含引号)。

于是,Jie 困扰了,希望聪明的你能解决这个问题。

输入格式

设 Σ\Sigma 为字符串的字符集大小,即字符串中每个字符都是 11 到 Σ\Sigma 之间的整数。

第一行一个整数表示测试点编号。(样例和 Extra Test 中测试点编号为 00 到 2020 间的任意整数)

第二行一个正整数表示 aa 串的长度 nn。

第三行 nn 个 11 到 Σ\Sigma 间的整数表示 aa 串。

第四行一个正整数表示 bb 串的长度 mm。

第五行 mm 个 11 到 Σ\Sigma 间的整数表示 bb 串。

第六行一个正整数表示询问个数 qq。

接下来 qq 行表示操作,每行包含若干个整数。第一个整数 xx 表示操作类型:

  1. 若 x=1x=1 则后面有两个整数 y,zy,z,表示把 aa 串中的第 yy 位改成 zz。1≤y≤n1 \leq y \leq n,1≤z≤Σ1 \leq z \leq \Sigma。
  2. 若 x=2x=2 则后面有两个整数 y,zy,z,表示询问的子串在 aa 串中的区间 [y,z][y, z]。1≤y≤z≤n1 \leq y \leq z \leq n。
  3. 若 x=3x=3 则后面有两个整数 y,zy,z,表示询问的两个后缀的第一个字符在 bb 串中的位置。1≤y,z≤m1 \leq y, z \leq m。
  4. 若 x=4x=4 则后面有四个整数 l1,r1,l2,r2l_1,r_1,l_2,r_2,表示询问的两个子串在 bb 串中的区间 [l1,r1][l_1,r_1] 和 [l2,r2][l_2,r_2]。1≤l1≤r1≤m1 \leq l_1 \leq r_1 \leq m,1≤l2≤r2≤m1 \leq l_2 \leq r_2 \leq m。

输出格式

有 qq 行,每行对应每种操作的答案。

0
10
1 2 3 3 3 1 2 3 2 1
3
1 3 1
10
3 1 3
4 3 3 2 2
2 2 10
1 3 2
2 7 9
2 7 10
2 3 9
2 2 8
1 7 1
1 4 2
1
yes
1 2
1 3
0 3
1 1
1 1
1 1
2 1
2 1

提示

测试点编号 nn mm qq Σ\Sigma 备注
1,21,2 =103=10^3 ≤100\leq 100 =1000=1000 ≤105\leq 10^5 无
3,43,4 =105=10^5 =105=10^5 无操作二
5,65,6 ≤30\leq 30 无
7,87,8 ≤105\leq 10^5 只有操作三
9,109,10 只有操作四
11∼1611\sim 16 ≤5\leq 5 bb 串的生成方式是:人工确定每种字符出现的比例,然后均匀随机选取一个满足这一比例的字符串作为 bb
17∼2017\sim 20 ≤105\leq 10^5 无