「Wdoi-5」建立与摧毁的结界
题目背景
八云紫拥有操控境界程度的能力。作为其式神的八云蓝,同样拥有一定程度的操作境界的能力,而作为八云蓝的式神橙,却因为功力尚且不足,而无法对境界进行过多的干预了。
于是八云蓝打算教教橙,境界的用法。境界可以被抽象成一层一层的括号,操作境界本质上就是对括号序列进行修改。由于橙的能力尚且不足,因此只能进行一些简单的境界的建立与摧毁。
尽管如此,通过简单的操作,亦可以把一个境界转换为另外一个境界。为了给橙作为练习,蓝找来了两个境界的范本。将其中一个境界转换为另外一个境界的难度,就是橙需要施用能力的最小次数。但是由于境界实在太长,蓝决定写一个程序(?)来帮帮她计算出境界的难度。
题目描述
境界可以被抽象为由圆括号组成的括号序列。现做出如下定义:
- 定义 $D_i$ 为**嵌套括号序列**。其中 $D_0$ 为零阶嵌套括号序列,被定义为单组括号 $\verb!()!$;而 $D_k$ 则为 $k$ 阶嵌套括号序列($k \geq 1$)定义为 $\verb!(!D_{k-1}\verb!)!$,即在 $D_{k-1}$ 的外层增添了一层括号。
- 定义 $F_i$ 为**平铺括号序列**。其中 $F_0$ 为零阶平铺括号序列,被定义为单组括号 $\verb!()!$;而 $F_k$ 则为 $k$ 阶平铺括号序列($k \geq 1$),定义为 $\verb!()!F_{k-1}$,即在 $F_{k-1}$ 的左侧增添了一对括号。
例如,$\verb!((()))!$ 为 $D_2$,$\verb!()()()()!$ 为 $F_{3}$。
现在蓝给出了两个长度为 $n$ 的**合法**括号序列 $A$ 和 $B$。橙可以用以下操作对序列 $A$ 进行变换:
- 选择任意非负整数 $k$,选择括号序列的一个子串满足其为一个 $k$ 阶嵌套括号序列,然后将其变为 $k$ 阶平铺括号序列。
- 选择任意非负整数 $k$,选择括号序列的一个子串满足其为一个 $k$ 阶平铺括号序列,然后将其变为 $k$ 阶嵌套括号序列。
**提示说明**处有「合法括号序列」与「子串」的定义。
现在需要求出将序列 $A$ 变换为序列 $B$ 所需的最少操作数。可以证明,总存在一种操作方案能将序列 $A$ 变换为序列 $B$。
输入输出格式
输入格式
- 第一行共有一个整数 $n$,表示 $A$ 与 $B$ 括号序列的长度。
- 接下来一行,共有 $n$ 个字符,描述括号序列 $A$。保证序列 $A$ 合法。
- 接下来一行,共有 $n$ 个字符,描述括号序列 $B$。保证序列 $B$ 合法。
输出格式
- 共一行,一个整数,表示将 $A$ 转换为 $B$ 需要的最少步数(可能为 $0$,也就是不进行任何操作)。
输入输出样例
输入样例 #1
14
((()())(()()))
()()()()()()()
输出样例 #1
6
输入样例 #2
14
((()())(()()))
(()())(()())()
输出样例 #2
10
说明
样例 $3$ 见下发的附件 $\textbf{\textit{border3.in/border3.ans}}$。
样例 $4$ 见下发的附件 $\textbf{\textit{border4.in/border4.ans}}$。满足特殊性质 $\text{A}$(见下文)。
样例 $5$ 见下发的附件 $\textbf{\textit{border5.in/border5.ans}}$。
#### 样例 1 解释
- 第一步:$\texttt{((\underline{()()})(()()))}\to\texttt{((\underline{(())})(()()))}$。
- 第二步:$\texttt{(((()))(\underline{()()}))}\to\texttt{(((()))(\underline{(())}))}$。
- 第三步:$\texttt{(((()))\underline{((()))})}\to\texttt{(((()))\underline{()()()})}$。
- 第四步:$\texttt{(\underline{((()))}()()())}\to\texttt{(\underline{()()()}()()())}$。
- 第五步:$\texttt{(\underline{()()()()()()})}\to\texttt{(\underline{(((((())))))})}$。
- 第六步:$\texttt{\underline{((((((()))))))}}\to\texttt{\underline{()()()()()()()}}$。
可以证明,不存在更短的方案。
#### 提示
**合法括号序列**通过这样一个形式定义:
- $\verb!()!$ 是合法括号序列。
- 若 $A$ 是合法括号序列,那么 $\verb!(!A\verb!)!$ 是合法括号序列。
- 若 $A,B$ 均为合法括号序列,那么 $AB$ 是合法括号序列。
我们称 $A$ 是 $B$ 的**子串**,当且仅当删除 $B$ 开头若干个字符(可以不删除),再删除 $B$ 末尾若干个字符(可以不删除),剩下来的字符序列与 $A$ 完全相同。
#### 数据范围及约定
本题共有 $20$ 个测试点,每个测试点 $5$ 分。最终分数为所有测试点分数之和。
$$
\def\arraystretch{1.5}
\begin{array}{|c|c|c|}\hline
\textbf{Task} & \bm{n\le } & \textbf{特殊性质} \cr\hline
1\sim 4 & 10 & - \cr\hline
5\sim 7 & 2\times 10^3 & \text{A} \cr\hline
8\sim 10 & 2\times 10^3 & - \cr\hline
11\sim 15 & 10^6 & \text{A} \cr\hline
16\sim 20 & 10^6 & - \cr\hline
\end{array}
$$
**特殊性质** $\textbf{A}$:保证 $B$ 是 $(n\div 2-1)$ 阶平铺括号序列。
#### 友情提醒
考虑到选手可能会用不同的方式进行字符串的读入,这里保证输入文件**每行末尾没有多余空格**,并且每行都以 `\n` 结尾(也就是说,不会出现多余的 `\r`)。