#P5284. [十二省联考 2019] 字符串问题

[十二省联考 2019] 字符串问题

题目背景

Yazid 和 Tiffany 喜欢字符串问题。在这里,我们将给你介绍一些关于字符串的基本概念。

对于一个字符串 SS ,我们定义 S|S| 表示 SS 的长度。

接着,我们定义该串的子串 S(L,R)S(L, R) 表示由 SS 中从左往右数,第 LL 个字符到第 RR 个字符依次连接形成的字符串,特别地,如果 L<1L < 1R>SR > |S|L>RL > R,则 S(L,R)S(L, R) 表示空串。

我们说两个字符串相等,当且仅当它们的长度相等,且从左至右各位上的字符依次 相同。

我们说一个字符串 TTSS 的前缀,当且仅当 S(1,T)=TS(1, |T|) = T

两个字符串 SS, TT 相加 S+TS + T 表示的是在 SS 后紧挨着写下 TT 得到的长度为 S+T|S| + |T| 的字符串。

题目描述

现有一个字符串 SS

Tiffany 将从中划出 nan_a 个子串作为 AA 类串,第 ii 个(1ina1 \leqslant i \leqslant n_a)为 Ai=S(lai,rai)A_i = S(la_i, ra_i)

类似地,Yazid 将划出 nbn_b 个子串作为 BB 类串,第 ii 个(1inb1 \leqslant i \leqslant n_b)为 Bi=S(lbi,rbi)B_i = S(lb_i, rb_i)

现额外给定 mm 组支配关系,每组支配关系 (x,y)(x, y) 描述了第 xxAA 类串支配yyBB 类串。

求一个长度最大的目标串 TT,使得存在一个串 TT 的分割 T=t1+t2++tkT = t_1+t_2+· · ·+t_kk0k \geqslant 0)满足:

  • 分割中的每个串 tit_i 均为 AA 类串:即存在一个与其相等的 AA 类串,不妨假设其为 ti=Aidit_i = A_{id_i}
  • 对于分割中所有相邻的串 ti,ti+1t_i, t_{i+1}1i<k1 \leqslant i < k),都有存在一个AidiA_{id_i} 支配的 BB 类串,使得该 BB 类串为 ti+1t_{i+1} 的前缀。

方便起见,你只需要输出这个最大的长度即可。

特别地,如果存在无限长的目标串(即对于任意一个正整数 nn,都存在一个满足限制的长度超过 nn 的串),请输出 1-1

输入格式

单个测试点中包含多组数据,输入的第一行包含一个非负整数 TT 表示数据组数。接下来依次描述每组数据,对于每组数据:

  • 11 行一个只包含小写字母的字符串 SS
  • 22 行一个非负整数 nan_a,表示 AA 类串的数目。接下来 nan_a 行,每行 22 个用空格隔开的整数。
    • 这部分中第 ii 行的两个数分别为 laila_i, raira_i,描述第 iiAA 类串。
    • 保证 1lairaiS1 \leqslant la_i \leqslant ra_i \leqslant |S|
  • 接下来一行一个非负整数 nbn_b,表示 BB 类串的数目。接下来 nbn_b 行,每行 22 个用空格隔开的整数。
    • 这部分中第 ii 行的两个数分别为 lbilb_i, rbirb_i,描述第 iiBB 类串。
    • 保证 1lbirbiS1 \leqslant lb_i \leqslant rb_i \leqslant |S|
  • 接下来一行一个非负整数 mm,表示支配关系的组数。接下来 mm 行,每行 22 个用空格隔开的整数。
    • 这部分中每行的两个整数 xx, yy,描述一对 (x,y)(x, y) 的支配关系,具体意义见 【题目描述】。
    • 保证 1xna1 \leqslant x \leqslant n_a1ynb1 \leqslant y \leqslant n_b。保证所有支配关系两两不同,即不存在两组支配关系的 x,x, y 相同。

输出格式

依次输出每组数据的答案,对于每组数据:

  • 一行一个整数表示最大串长。特别地,如果满足限制的串可以是无限长的,则请 输出 1-1
3
abaaaba
2
4 7
1 3
1
3 4
1
2 1
abaaaba
2
4 7
1 3
1
7 7
1
2 1
abbaabbaab
4
1 5
4 7
6 9
8 10
3
1 6
10 10
4 6
5
1 2
1 3
2 1
3 3
4 1
7
-1
13

提示

样例一解释

对于第 11 组数据,AA 类串有 aaba\texttt{aaba}aba\texttt{aba}BB 类串有 aa\texttt{aa},且 A2A_2 支配 B1B_1。我们可以找到串 abaaaba\texttt{abaaaba},它可以拆分成 A2+A1A_2 + A_1,且 A1A_1 包含由 A2A_2 所支配的 B1B_1 作为前缀。可以证明不存在长度更大的满足限制的串。

对于第 22 组数据,与第 11 组数据唯一不同的是,唯一的 BB 类串为 a\texttt{a}。容易证明存在无限长的满足限制的串。

对于第 33 组数据,容易证明 abbaabbaaaabb\texttt{abbaabbaaaabb} 是最长的满足限制的串。

子任务

img

为了方便你的阅读,我们把测试点编号放在了表格的中间,请你注意这一点。

表格中的 Ai>Bj|A_i| > |B_j| 指的是任意 BB 类串的长度不超过任意 AA 类串的长度。

对于所有测试点,保证:T100T \leqslant 100,且对于测试点内所有数据,S|S|, nan_a, nbn_b, mm总和分别不会超过该测试点中对应单组数据的限制1010 倍。比如,对于第 11 组测试点,就有 na10×100=1000\sum n_a \leqslant 10 \times 100 = 1000 等。特别地,我们规定对于测试点 44,有 T10T \leqslant 10

对于所有测试点中的每一组数据,保证:1S2×1051 \leqslant |S| \leqslant 2 \times 10^5nan_a, nb2×105n_b \leqslant 2 \times 10^5m2×105m \leqslant 2 \times 10^5

提示

十二省联考命题组温馨提醒您:

数据千万条,清空第一条。

多测不清空,爆零两行泪。