题目描述
题目译自 Ukrainian Olympiads in Informatics 2025 Stage 4 Day1 T4. Проста підпослідовність
我们称一个整数数组 d1,d2,…,dm 为好的,如果其长度为 0,或者对于任意 1≤i≤m,前缀和 j=1∑idj 以及后缀和 j=i∑mdj 都是非负的。其中,j=l∑rdj 表示 dl+dl+1+…+dr。
我们定义一个数组的美丽度为它的最长好的子序列的长度。
给定一个长度为 n 的数组 a,数组元素仅由 −1 和 1 组成。
你需要处理 q 个查询,查询分为两种类型:
- 将元素 ap 替换为 −ap,其中 p 是查询参数;
- 计算由元素 [al,al+1,…,ar] 组成的数组的美丽度,其中 (l,r) 是查询参数。
注意:数组 c 称为数组 b 的子序列,如果可以通过从数组 b 中删除若干元素(可能是零个),使得剩余元素组成数组 c。空数组是任意数组的子序列。
输入格式
输入的第一行包含两个整数 n 和 q (1≤n,q≤5⋅105),分别表示数组 a 的长度和查询的数量。
第二行包含 n 个整数 a1,a2,…,an (ai∈{−1,1}),表示数组 a 的元素。
接下来的 q 行描述查询。每行的第一个数字 typei (1≤typei≤2) 表示查询类型。第一类查询格式为 1 p (1≤p≤n),第二类查询格式为 2 l r (1≤l≤r≤n)。
输出格式
对于每个第二类查询,单独输出一行一个整数,表示对应数组的美丽度。
5 4
1 1 1 -1 1
2 1 5
1 3
2 1 4
2 2 5
5
2
3
4 4
1 1 1 -1
2 1 2
2 2 4
2 3 3
2 3 4
2
2
1
1
数据范围与提示
详细子任务附加限制及分值如下表所示:
| 子任务 |
分值 |
附加限制 |
| 1 |
2 |
ai=(−1)i+1(对于 1≤i≤n),且无第一类查询 |
| 2 |
7 |
n≤16,且无第一类查询 |
| 3 |
21 |
n,q≤100 |
| 4 |
20 |
n,q≤3000 |
| 5 |
27 |
n,q≤2⋅105,且无第一类查询 |
| 6 |
14 |
n,q≤2⋅105 |
| 7 |
9 |
无附加限制 |