5D | datealive
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
贡献名单
想法 | 标程 | 数据 | 验题 | 题解 |
---|---|---|---|---|
xxxxxzy | 喵仔牛奶 |
题目描述
给定长度为 的序列 ,。序列中每个元素都对应一个括号,若 则该位置上的括号是左括号,若 则该位置上的括号是右括号。
我们用 表示区间 内的括号序列是否合法。若 组成的括号序列合法则为 ,否则则为 。
合法括号序列的定义:
- 空串是合法括号序列;
- 若
A
是合法括号序列,(A)
是合法括号序列; - 若
A
和B
是合法括号序列,AB
是合法括号序列。
你需要在线地执行 次操作,分为两种:
1 l r
,查询 $\max\limits_{[l',r']\in[l,r]}\{(r'-l'+1)\cdot f(l',r')\}$,即查询 间的最长合法括号子串的长度。2 l r
,对于 ,将 修改为 ,即将 间的括号逐个调转方向。
输入格式
第一行两个正整数 ,分别代表序列长度和操作次数。
接下来 个非负整数 ,代表初始序列。
接下来 行,每行三个正整数 ,表示操作类型和加密后的 。
为了强制在线,数据经过加密,我们通过如下过程解密:记 为上次查询操作的答案,没有则为 。,若 则交换 。
表示操作的三个参数,若 表示题面中的 1 l r
操作;若 表示题面中的 2 l r
操作。
输出格式
对于每次查询,输出一行一个非负整数表示查询的答案。
样例 #1
样例输入 #1
10 10
0 1 1 0 0 1 0 0 1 1
2 7 8
2 10 5
2 5 1
2 7 6
2 7 1
2 4 5
2 3 4
1 5 2
1 4 1
1 7 7
样例输出 #1
4
2
0
样例 #2
样例输入 #2
20 20
0 0 0 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1
2 16 7
2 12 10
1 4 5
1 14 7
1 16 7
2 15 12
1 12 2
1 3 4
1 1 10
2 14 3
2 19 1
1 20 9
2 14 16
1 10 13
1 6 8
2 1 2
1 8 16
1 9 15
1 17 12
2 15 14
样例输出 #2
0
2
8
2
0
2
6
4
0
2
0
0
提示
样例 1 解释
解密后的结果如下:
10 10
0 1 1 0 0 1 0 0 1 1
2 8 9
2 1 6
2 2 6
2 7 8
2 2 8
2 5 6
2 4 5
1 3 6
1 6 9
1 10 10
次修改后的括号串为 。
- 对于第一组询问,截取子串 得 。整个子串是合法的括号序列,故答案为 。
- 对于第二组询问,截取子串 得 。子串 是其中最长的合法括号子串,故答案为 。
- 对于第三组询问,截取子串 得 。该子串中没有合法括号子串,故答案为 。
数据规模与约定
本题采用捆绑测试。
Subtask 编号 | 分值 | 特殊性质 | ||
---|---|---|---|---|
× | ||||
× | ||||
特殊性质:保证没有修改操作。
对于所有数据,,,,,。
本题除 Subtask #3 外保证操作类型随机生成,即每次选择一个 中的随机数(选到 和 的概率均为 )作为 。
本题题目附件附有大样例。