#P12723. [KOI 2021 Round 2] 括号值比较

[KOI 2021 Round 2] 括号值比较

题目背景

试题来源:https://koi.or.kr/archives/。中文翻译做了少量本土化修改。

按照署名—非商业性使用—相同方式共享 4.0 协议国际版进行授权。

题目描述

使用左括号 ( 和右括号 ) 构成的字符串中,所谓“正确括号序列”定义如下:

  • 仅包含一对括号的字符串 () 是一个正确的括号序列。
  • XX 是一个正确的括号序列,则用括号将 XX 包起来形成的 (X)(X) 也是一个正确的括号序列。
  • XXYY 都是正确的括号序列,则将它们连接而成的 XYXY 也是一个正确的括号序列。
  • 所有正确的括号序列都只能通过以上三条规则构造出来。

例如,((()(())))(())()() 是正确的括号序列,而 (())((()() 都不是正确的括号序列。

对于一个正确的括号序列 XX,我们定义其括号值 f[X]f[X],具体如下:

  • f[()]=1f[()] = 1
  • XX 是一个正确的括号序列,则 f[(X)]=2×f[X]f[(X)] = 2 \times f[X]
  • XXYY 是正确的括号序列,则 f[XY]=f[X]+f[Y]f[XY] = f[X] + f[Y]

我们来看几个例子:

  • f[()]=1f[()] = 1
  • f[(())]=2×f[()]=2×1=2f[(())] = 2 \times f[()] = 2 \times 1 = 2
  • f[()()]=f[()]+f[()]=1+1=2f[()()] = f[()] + f[()] = 1 + 1 = 2
  • f[()()()]=f[()]+f[()()]=1+2=3f[()()()] = f[()] + f[()()] = 1 + 2 = 3
  • f[(()())]=2×f[()()]=2×2=4f[(()())] = 2 \times f[()()] = 2 \times 2 = 4
  • f[((()))]=2×f[(())]=2×2=4f[((()))] = 2 \times f[(())] = 2 \times 2 = 4
  • f[()(())]=f[()]+f[(())]=1+2=3f[()(())] = f[()] + f[(())] = 1 + 2 = 3
  • $f[(()())()(())] = f[(()())] + f[()(())] = 4 + 3 = 7$。

你的任务是读取两个正确的括号序列 AABB,比较它们的括号值 f[A]f[A]f[B]f[B]

也就是说,判断 f[A]=f[B]f[A] = f[B]f[A]<f[B]f[A] < f[B] 还是 f[A]>f[B]f[A] > f[B]

一个输入中会包含 TT 个测试用例。

输入格式

第一行包含一个整数 TT,表示测试用例的个数。

接下来的 TT 个测试用例中,每个测试用例如下两行组成:

  • 第一行为括号序列 AA
  • 第二行为括号序列 BB

输出格式

对于每个测试用例,输出一行结果:

  • f[A]=f[B]f[A] = f[B],输出等号 =
  • f[A]<f[B]f[A] < f[B],输出小于号 <
  • f[A]>f[B]f[A] > f[B],输出大于号 >
1
(())
()()
=
1
()()()
(()())
<
2
((()))
()(())
(((())))
()()()()()
>
>

提示

样例 1 说明

f[A]=f[(())]=2f[A] = f[(())] = 2f[B]=f[()()]=2f[B] = f[()()] = 2,因此 f[A]=f[B]f[A] = f[B]

样例 2 说明

f[A]=f[()()()]=3f[A] = f[()()()] = 3f[B]=f[(()())]=4f[B] = f[(()())] = 4,因此 f[A]<f[B]f[A] < f[B]

样例 3 说明

  • 第一个测试用例中,f[A]=f[((()))]=4f[A] = f[((()))] = 4f[B]=f[()(())]=3f[B] = f[()(())] = 3,因此 f[A]>f[B]f[A] > f[B]
  • 第二个测试用例中,f[A]=f[(((())))]=8f[A] = f[(((())))] = 8f[B]=f[()()()()()]=5f[B] = f[()()()()()] = 5,因此 f[A]>f[B]f[A] > f[B]

约束条件

  • 1T101 \leq T \leq 10
  • AABB 都是正确的括号序列。
  • 一个输入中所有测试用例中 AA 的总长度之和不超过 3×1063\times10^6
  • 一个输入中所有测试用例中 BB 的总长度之和不超过 3×1063\times10^6

子任务

  1. 33 分)AABB 的长度都不超过 66
  2. 2323 分)AABB 的长度都不超过 5050
  3. 1313 分)
    • 括号数量相等,且所有右括号都出现在所有左括号之后的括号序列,称为“简单括号序列”。
      • 例如 ()(())((()))(((((()))))) 都是简单括号序列。
    • AABB 都是由长度各不相同的多个简单括号序列拼接而成的。
      • 比如 ()(())、(((())))()((())) 是符合的例子。
      • (())()(()) 也是由简单括号序列拼接而成,但因为包含了两段长度相同的简单括号序列 (()),因此在此子任务中不会出现这种情况。
  4. 6161 分)无额外约束条件。