\. 建立与摧毁的结界

    Type: RemoteJudge 1000ms 256MiB

建立与摧毁的结界

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目背景

八云紫拥有操控境界程度的能力。作为其式神的八云蓝,同样拥有一定程度的操作境界的能力,而作为八云蓝的式神橙,却因为功力尚且不足,而无法对境界进行过多的干预了。

于是八云蓝打算教教橙,境界的用法。境界可以被抽象成一层一层的括号,操作境界本质上就是对括号序列进行修改。由于橙的能力尚且不足,因此只能进行一些简单的境界的建立与摧毁。

尽管如此,通过简单的操作,亦可以把一个境界转换为另外一个境界。为了给橙作为练习,蓝找来了两个境界的范本。将其中一个境界转换为另外一个境界的难度,就是橙需要施用能力的最小次数。但是由于境界实在太长,蓝决定写一个程序(?)来帮帮她计算出境界的难度。

题目描述

境界可以被抽象为由圆括号组成的括号序列。现做出如下定义:

  • 定义 DiD_i嵌套括号序列。其中 D0D_0 为零阶嵌套括号序列,被定义为单组括号 ()\verb!()!;而 DkD_k 则为 kk 阶嵌套括号序列(k1k \geq 1)定义为 (Dk1)\verb!(!D_{k-1}\verb!)!,即在 Dk1D_{k-1} 的外层增添了一层括号。
  • 定义 FiF_i平铺括号序列。其中 F0F_0 为零阶平铺括号序列,被定义为单组括号 ()\verb!()!;而 FkF_k 则为 kk 阶平铺括号序列(k1k \geq 1),定义为 ()Fk1\verb!()!F_{k-1},即在 Fk1F_{k-1} 的左侧增添了一对括号。

例如,((()))\verb!((()))!D2D_2()()()()\verb!()()()()!F3F_{3}

现在蓝给出了两个长度为 nn合法括号序列 AABB。橙可以用以下操作对序列 AA 进行变换:

  • 选择任意非负整数 kk,选择括号序列的一个子串满足其为一个 kk 阶嵌套括号序列,然后将其变为 kk 阶平铺括号序列。
  • 选择任意非负整数 kk,选择括号序列的一个子串满足其为一个 kk 阶平铺括号序列,然后将其变为 kk 阶嵌套括号序列。

提示说明处有「合法括号序列」与「子串」的定义。

现在需要求出将序列 AA 变换为序列 BB 所需的最少操作数。可以证明,总存在一种操作方案能将序列 AA 变换为序列 BB

输入格式

  • 第一行共有一个整数 nn,表示 AABB 括号序列的长度。
  • 接下来一行,共有 nn 个字符,描述括号序列 AA。保证序列 AA 合法。
  • 接下来一行,共有 nn 个字符,描述括号序列 BB。保证序列 BB 合法。

输出格式

  • 共一行,一个整数,表示将 AA 转换为 BB 需要的最少步数(可能为 00,也就是不进行任何操作)。

样例 #1

样例输入 #1

14
((()())(()()))
()()()()()()()

样例输出 #1

6

样例 #2

样例输入 #2

14
((()())(()()))
(()())(()())()

样例输出 #2

10

提示

样例 33 见下发的附件 border3.in/border3.ans\textbf{\textit{border3.in/border3.ans}}。 样例 44 见下发的附件 border4.in/border4.ans\textbf{\textit{border4.in/border4.ans}}。满足特殊性质 A\text{A}(见下文)。 样例 55 见下发的附件 border5.in/border5.ans\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!()! 是合法括号序列。
  • AA 是合法括号序列,那么 (A)\verb!(!A\verb!)! 是合法括号序列。
  • A,BA,B 均为合法括号序列,那么 ABAB 是合法括号序列。

我们称 AABB子串,当且仅当删除 BB 开头若干个字符(可以不删除),再删除 BB 末尾若干个字符(可以不删除),剩下来的字符序列与 AA 完全相同。

数据范围及约定

本题共有 2020 个测试点,每个测试点 55 分。最终分数为所有测试点分数之和。

$$\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} $$

特殊性质 A\textbf{A}:保证 BB(n÷21)(n\div 2-1) 阶平铺括号序列。

友情提醒

考虑到选手可能会用不同的方式进行字符串的读入,这里保证输入文件每行末尾没有多余空格,并且每行都以 \n 结尾(也就是说,不会出现多余的 \r)。

北辰OI俱乐部算法提高班:动态规划专题(一)

Not Claimed
Status
Done
Problem
28
Open Since
2023-11-25 0:00
Deadline
2024-12-26 23:59
Extension
24 hour(s)