#P14877. [OOI2023预选赛]Australian RBS澳大利亚括号序列
[OOI2023预选赛]Australian RBS澳大利亚括号序列
F.
时间限制: 1 秒
空间限制: 512 MB
输入输出: 标准输入 / 标准输出
题目描述
在澳大利亚,大家从各种角度看待事物,因此他们用一种不同寻常的方式定义“正确括号序列”。
一个括号序列被认为是正确的,当且仅当它可以由以下规则构造:
- 空序列是正确括号序列;
- 如果 是正确括号序列,那么
)S(、(S)、[S]、]S[、{S}、}S{、<S>、>S<也都是正确括号序列; - 如果 和 都是正确括号序列,那么 也是正确括号序列,其中 表示字符串拼接。
现在给定一个由括号字符组成的字符串 ,并有 个操作,操作分为两类:
- 修改位置 上的括号;
- 询问子串 是否是澳大利亚意义下的正确括号序列。
请处理所有操作。
输入格式
第一行包含一个整数 ,表示括号序列长度。
第二行包含长度为 的字符串 ,字符串只包含字符 ()[]{}<>。
第三行包含一个整数 ,表示操作数量。
接下来 行,每行先输入一个整数 :
- 若 ,接下来输入整数 和字符 ,表示把 修改为 。保证 是
()[]{}<>中的一个字符; - 若 ,接下来输入整数 ,表示询问子串 是否正确。
输出格式
对于每个 的询问,若对应子串是正确括号序列,输出 Yes;否则输出 No。
数据范围
,,,。
样例
样例 1
6
)()(()
7
2 1 6
1 4 )
2 2 5
1 3 [
1 4 ]
2 1 6
2 4 5
Yes
Yes
Yes
No
样例 2
10
>())(][<}{
6
2 1 10
1 3 (
2 1 10
2 2 5
1 2 )
2 1 10
Yes
No
No
Yes
样例解释
样例 1 中,第一次询问的子串 )()(() 可以分解为若干个澳大利亚正确括号序列的拼接,因此答案为 Yes。之后经过修改,后续询问同理。最后一次询问子串 ]( 不正确,因此答案为 No。
样例 2 中,第一次询问对应的字符串可以按上述规则构造,因此答案为 Yes;经过修改后,部分子串不再正确,答案如输出所示。
子任务
| 组别 | 分数 | 附加限制 | 依赖 | 备注 |
|---|---|---|---|---|
| 0 | 样例 | - | ||
| 1 | 16 | 0 | ||
| 2 | 15 | 0,1 | ||
| 3 | 12 | 且只有询问操作 | - | |
| 4 | 13 | 任意时刻字符串只由 ( 和 ) 组成 |
||
| 5 | 20 | 只有询问操作 | 3 | |
| 6 | 24 | 无额外限制 | 0--5 | Offline 检查 |