A3575 「UOI 2025 Stage 4 Day1」简单子序列

暂无评定 传统题 UOI(乌克兰) 上传者
时间限制1500ms
内存限制256MiB
通过 / 提交0/0

A3575「UOI 2025 Stage 4 Day1」简单子序列

暂无评定 传统题 UOI(乌克兰) 上传者
时间限制1500ms
内存限制256MiB
通过 / 提交0/0

题目描述

题目译自 Ukrainian Olympiads in Informatics 2025 Stage 4 Day1 T4. Проста підпослідовність

我们称一个整数数组 d1,d2,…,dmd_1, d_2, \ldots, d_m 为好的,如果其长度为 00,或者对于任意 1≤i≤m1 \le i \le m,前缀和 ∑j=1idj\sum\limits_{j=1}^{i} d_j 以及后缀和 ∑j=imdj\sum\limits_{j=i}^{m} d_j 都是非负的。其中,∑j=lrdj\sum\limits_{j=l}^{r} d_j 表示 dl+dl+1+…+drd_l + d_{l+1} + \ldots + d_{r}。

我们定义一个数组的美丽度为它的最长好的子序列的长度。

给定一个长度为 nn 的数组 aa,数组元素仅由 −1-1 和 11 组成。

你需要处理 qq 个查询,查询分为两种类型:

  1. 将元素 apa_p 替换为 −ap-a_p,其中 pp 是查询参数;
  2. 计算由元素 [al,al+1,…,ar][a_{l}, a_{l+1}, \ldots, a_r] 组成的数组的美丽度,其中 (l,r)(l, r) 是查询参数。

注意:数组 cc 称为数组 bb 的子序列,如果可以通过从数组 bb 中删除若干元素(可能是零个),使得剩余元素组成数组 cc。空数组是任意数组的子序列。

输入格式

输入的第一行包含两个整数 nn 和 qq (1≤n,q≤5⋅105)(1 \le n, q \le 5 \cdot 10^5),分别表示数组 aa 的长度和查询的数量。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n (ai∈{−1,1})(a_i \in \{-1, 1\}),表示数组 aa 的元素。

接下来的 qq 行描述查询。每行的第一个数字 typeitype_i (1≤typei≤2)(1 \le type_i \le 2) 表示查询类型。第一类查询格式为 1 p (1≤p≤n)(1 \le p \le n),第二类查询格式为 2 l r (1≤l≤r≤n)(1 \le l \le r \le 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

数据范围与提示

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制
11 22 ai=(−1)i+1a_i = (-1)^{i+1}(对于 1≤i≤n1 \le i \le n),且无第一类查询
22 77 n≤16n \le 16,且无第一类查询
33 2121 n,q≤100n, q \le 100
44 2020 n,q≤3000n, q \le 3000
55 2727 n,q≤2⋅105n, q \le 2 \cdot 10^5,且无第一类查询
66 1414 n,q≤2⋅105n, q \le 2 \cdot 10^5
77 99 无附加限制