P4788 [BalkanOI 2018] Parentrises
题目描述
**翻译自 [BalkanOI 2018](http://boi2018.ro) Day2 T1「[Parentrises](http://boi2018.ro/assets/Tasks/BOI/Day_2/parentrises/parentrises_en.pdf)」**
**「括号串」**是一个仅由 `(` 和 `)` 构成的字符串。如果在括号串中插入一些 `1` 和 `+` 可以将其转化为正确的表达式,该字符串就是一个**「良括号串」**。例如,`(())` 和 `(())` 是良括号串,而 `)(` 和 `(` 不是。空字符串可视为良括号串。(就是你们学 Catalan 数时学的那个啊)
将一个**括号串**(不是良括号串)的每个括号都涂成红绿蓝三种颜色之一,如果有一种方案同时满足:
+ 忽略该串的所有蓝色括号后它是**良括号串**;
+ 忽略该串的所有红色括号后它是良括号串;
该串就是 **RGB 可读**的。
你会接到两类任务之一。任务类型用一个整数 $P$ 表示,$P=1$ 或 $2$。
* $P=1$:你会接到 $T$ 组询问,每组询问包含一个括号串,试问该串是否 RGB 可读,如果是,请输出一种染色方案,如果否请输出 `impossible`;
* $P=2$:你会接到 $T$ 组询问,每组询问包含一个数 $N$,试求:有多少个长度为 $N$ 的 RGB 可读的良括号串。输出答案模 $(10^9+7)$ 的结果。
输入格式
第一行有一个整数 $P$。
第二行有一个整数 $T$。
+ 如果 $P=1$,在接下来的 $T$ 行中,每行有一个括号串,表示询问。
+ 如果 $P=2$,在接下来的 $T$ 行中,每行有一个数 $N$,表示询问。
输出格式
如果 $P=1$,对于每组询问,
+ 如果该串是 RGB 可读的,请输出一种染色方案;
+ 如果该串不是 RGB 可读的,请输出 `impossible`;
如果 $P=2$,对于每组询问,请输出长度为 $N$ 的 RGB 可读的良括号串的个数模 $(10^9+7)$ 的结果。
说明/提示
样例 $1$ 解释:
对于查询 1,忽略原串的所有蓝色括号后它变为 `()()`;忽略原串的所有红色括号后它也变为 `()()`。
对于查询 2,忽略原串的所有蓝色括号后它变为 `()`;忽略原串的所有红色括号后它变为 `()()`。
$P = 1$:
设 $L$ 为字符串总长。
* 子任务 #1(5 分):$1 ≤ T ≤ 5,$ $1 ≤ len(S) ≤ 13$。
* 子任务 #2(11 分):$1 ≤ L ≤ 100$。
* 子任务 #3(6 分):$1 ≤ L ≤ 1000$。
* 子任务 #4(28 分):$1 ≤ L ≤ 10^6$。
$P = 2$:
* 子任务 #5(6 分):$1 ≤ N, T ≤ 15$。
* 子任务 #6(16 分):$1 ≤ N, T ≤ 30$。
* 子任务 #7(28 分):$1 ≤ N, T ≤ 300$。
感谢 Planet6174 提供的翻译