#P12547. [UOI 2025] Simple Subsequence

[UOI 2025] Simple Subsequence

题目描述

我们称一个整数数组 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。

我们定义数组的 美丽值 为其最长 好的 子序列1^1的长度。

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

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

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

输入格式

第一行包含两个整数 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) 表示查询类型。类型为 11 的查询格式为 1 p\texttt{1 p} (1≤p≤n)(1 \le p \le n),类型为 22 的查询格式为 2 l r\texttt{2 l r} (1≤l≤r≤n)(1 \le l \le r \le n)。

输出格式

对于每个类型为 22 的查询,输出一行一个整数 —— 对应数组的美丽值。

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^1 数组 cc 称为数组 bb 的子序列,如果可以通过从 bb 中删除若干元素(可能为零)得到 cc。空数组是任何数组的子序列。

评分标准

  • (22 分):对于所有 1≤i≤n1 \le i \le n,ai=(−1)i+1a_i = (-1)^{i+1},且没有类型 11 的查询;
  • (77 分):n≤16n \le 16,且没有类型 11 的查询;
  • (2121 分):n,q≤100n, q \le 100;
  • (2020 分):n,q≤3000n, q \le 3000;
  • (2727 分):n,q≤2⋅105n, q \leq 2 \cdot 10^5,且没有类型 11 的查询;
  • (1414 分):n,q≤2⋅105n, q \leq 2 \cdot 10^5;
  • (99 分):无额外限制。

翻译由 DeepSeek V3 完成