luogu#P5284. [十二省联考 2019] 字符串问题
[十二省联考 2019] 字符串问题
题目背景
Yazid 和 Tiffany 喜欢字符串问题。在这里,我们将给你介绍一些关于字符串的基本概念。
对于一个字符串 ,我们定义 表示 的长度。
接着,我们定义该串的子串 表示由 中从左往右数,第 个字符到第 个字符依次连接形成的字符串,特别地,如果 或 或 ,则 表示空串。
我们说两个字符串相等,当且仅当它们的长度相等,且从左至右各位上的字符依次 相同。
我们说一个字符串 是 的前缀,当且仅当 。
两个字符串 , 相加 表示的是在 后紧挨着写下 得到的长度为 的字符串。
题目描述
现有一个字符串 。
Tiffany 将从中划出 个子串作为 类串,第 个()为 。
类似地,Yazid 将划出 个子串作为 类串,第 个()为 。
现额外给定 组支配关系,每组支配关系 描述了第 个 类串支配 第 个 类串。
求一个长度最大的目标串 ,使得存在一个串 的分割 ()满足:
- 分割中的每个串 均为 类串:即存在一个与其相等的 类串,不妨假设其为 。
- 对于分割中所有相邻的串 (),都有存在一个 支配的 类串,使得该 类串为 的前缀。
方便起见,你只需要输出这个最大的长度即可。
特别地,如果存在无限长的目标串(即对于任意一个正整数 ,都存在一个满足限制的长度超过 的串),请输出 。
输入格式
单个测试点中包含多组数据,输入的第一行包含一个非负整数 表示数据组数。接下来依次描述每组数据,对于每组数据:
- 第 行一个只包含小写字母的字符串 。
- 第 行一个非负整数 ,表示 类串的数目。接下来 行,每行 个用空格隔开的整数。
- 这部分中第 行的两个数分别为 , ,描述第 个 类串。
- 保证 。
- 接下来一行一个非负整数 ,表示 类串的数目。接下来 行,每行 个用空格隔开的整数。
- 这部分中第 行的两个数分别为 , ,描述第 个 类串。
- 保证 。
- 接下来一行一个非负整数 ,表示支配关系的组数。接下来 行,每行 个用空格隔开的整数。
- 这部分中每行的两个整数 , ,描述一对 的支配关系,具体意义见 【题目描述】。
- 保证 ,。保证所有支配关系两两不同,即不存在两组支配关系的 y 均相同。
输出格式
依次输出每组数据的答案,对于每组数据:
- 一行一个整数表示最大串长。特别地,如果满足限制的串可以是无限长的,则请 输出 。
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
提示
样例一解释
对于第 组数据, 类串有 与 , 类串有 ,且 支配 。我们可以找到串 ,它可以拆分成 ,且 包含由 所支配的 作为前缀。可以证明不存在长度更大的满足限制的串。
对于第 组数据,与第 组数据唯一不同的是,唯一的 类串为 。容易证明存在无限长的满足限制的串。
对于第 组数据,容易证明 是最长的满足限制的串。
子任务
为了方便你的阅读,我们把测试点编号放在了表格的中间,请你注意这一点。
表格中的 指的是任意 类串的长度不超过任意 类串的长度。
对于所有测试点,保证:,且对于测试点内所有数据,, , , 的总和分别不会超过该测试点中对应的单组数据的限制的 倍。比如,对于第 组测试点,就有 等。特别地,我们规定对于测试点 ,有 。
对于所有测试点中的每一组数据,保证:,, ,
提示
十二省联考命题组温馨提醒您:
数据千万条,清空第一条。
多测不清空,爆零两行泪。