#P12729. [KOI 2021 Round 2] 最长公共括号子串
[KOI 2021 Round 2] 最长公共括号子串
题目背景
试题来源:https://koi.or.kr/archives/。中文翻译做了少量本土化修改。
按照署名—非商业性使用—相同方式共享 4.0 协议国际版进行授权。
题目描述
给定两个仅由左括号 (
和右括号 )
组成的字符串 和 。
我们定义 为以下所有字符串的集合:
- 是 的子串;
- 是 的子串;
- 并且是一个合法括号序列;
- 集合中元素互不相同。
请你判断 是否为空集。如果不是,请计算出 中最长字符串的长度。
你需要解决一个输入中给出的 个测试用例。
合法括号序列的定义
合法括号序列的定义如下:
- 单独的一对括号
()
是合法括号序列; - 若 是合法括号序列,则用括号将其包围后的 也是合法括号序列;
- 若 和 都是合法括号序列,则其连接后的 也是合法括号序列;
- 所有合法括号序列都只能通过以上三种规则构造。
例如:((()(())))
和 (())()()
是合法括号序列,而 (()
和 )((()()
都不是合法括号序列。
子串的定义
给定一个长度为 的字符串 ,以及满足 的两个整数 和 ,则 表示从第 个字符开始到第 个字符为止的连续子串。
例如若 ,则 ,,因此 (()
和 ()()
都是该字符串的子串。但 )()(
不是其子串。
输入格式
第一行包含一个整数 ,表示测试用例数量。
接下来 行,每行由两个字符串 和 组成,中间以一个空格隔开,表示一个测试用例。
输出格式
对于每个测试用例,按顺序输出一行:
- 若 是空集,输出
- 否则,输出 中最长字符串的长度
3
()((())) (()((())))()
))(()(((( )())))))(
())) )))))(())
8
2
2
提示
约束条件
设 表示输入中所有测试用例的字符串 的总长度之和, 定义相同。
- 每个字符串 和 均由
'('
和')'
构成,长度均不少于 1
子任务
- (5 分),
- (13 分),
- (23 分),
- (17 分)所有测试用例中均满足
- (42 分)无额外约束条件