bzoj#P3936. Sone2

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)=maxs[1:k]=t[1:k]kf(s,t)=\max_{s[1:k]=t[1:k]}k

sstt 的最长公共前缀的长度。

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) = xii 的个数。

本来问题很简单的,但由于 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_1s2s_2 串联起来得到的字符串是否是 bb 串的子串,是的话输出 yes,否则输出 no

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

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

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

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

第三行 nn11Σ\Sigma 间的整数表示 aa 串。

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

第五行 mm11Σ\Sigma 间的整数表示 bb 串。

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

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

  1. x=1x=1 则后面有两个整数 y,zy,z,表示把 aa 串中的第 yy 位改成 zz
  2. x=2x=2 则后面有两个整数 y,zy,z,表示询问的子串在 aa 串中的区间 [y,z][y, z]
  3. x=3x=3 则后面有两个整数 y,zy,z,表示询问的两个后缀的第一个字符在 bb 串中的位置。
  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]

输出格式

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,2 =103=10^3 100\le 100 =103=10^3 105\le 10^5
3,4 =105=10^5 =105=10^5 无操作二
5,6 30\le 30
7,8 105\le 10^5 只有操作三
9,10 只有操作四
11-16 5\le 5 bb 串的生成方式是:人工确定每种字符出现的比例, 然后均匀随机选取一个满足这一比例的字符串作为 bb
18-20 105\le 10^5

对于 100%100\% 的数据,保证:

  • x=1x=1 时,1yn1 \leq y \leq n1zΣ1 \leq z \leq \Sigma
  • x=2x=2 时,1yzn1 \leq y \leq z \leq n
  • x=3x=3 时,1y,zm1 \leq y, z \leq m
  • x=4x=4 时,1l1r1m1 \leq l_1 \leq r_1 \leq m1l2r2m1 \leq l_2 \leq r_2 \leq m

题目来源

2015 年集训队互测 Round #1 By Sone