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