P12547 [UOI 2025] Simple Subsequence
题目描述
我们称一个整数数组 $d_1, d_2, \ldots, d_m$ 为*好的*,如果其长度为 $0$,或者对于任意 $1 \le i \le m$,$\sum\limits_{j=1}^{i} d_j$ 和 $\sum\limits_{j=i}^{m} d_j$ 都非负。其中 $\sum\limits_{j=l}^{r} d_j$ 表示 $d_l + d_{l+1} + \ldots + d_r$。
我们定义数组的 **美丽值** 为其最长 **好的** 子序列$^1$的长度。
给定一个长度为 $n$ 的数组 $a$,其元素**仅由 $-1$ 和 $1$ 组成**。
你需要处理 $q$ 个查询,查询分为两种类型:
- 将元素 $a_p$ 替换为 $-a_p$,其中 $p$ 为查询参数;
- 查询由元素 $[a_{l}, a_{l+1}, \ldots, a_r]$ 组成的数组的 **美丽值**,其中 $(l, r)$ 为查询参数。
输入格式
第一行包含两个整数 $n$, $q$ $(1 \le n, q \le 5 \cdot 10^5)$ —— 数组 $a$ 的长度和查询的数量。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$ $(a_i \in \{-1, 1\})$ —— 数组 $a$ 的元素。
接下来的 $q$ 行描述查询。第一个数字 $type_i$ $(1 \le type_i \le 2)$ 表示查询类型。类型为 $1$ 的查询格式为 $\texttt{1 p}$ $(1 \le p \le n)$,类型为 $2$ 的查询格式为 $\texttt{2 l r}$ $(1 \le l \le r \le n)$。
输出格式
对于每个类型为 $2$ 的查询,输出一行一个整数 —— 对应数组的*美丽值*。
说明/提示
$^1$ 数组 $c$ 称为数组 $b$ 的子序列,如果可以通过从 $b$ 中删除若干元素(可能为零)得到 $c$。空数组是任何数组的子序列。
### 评分标准
- ($2$ 分):对于所有 $1 \le i \le n$,$a_i = (-1)^{i+1}$,且没有类型 $1$ 的查询;
- ($7$ 分):$n \le 16$,且没有类型 $1$ 的查询;
- ($21$ 分):$n, q \le 100$;
- ($20$ 分):$n, q \le 3000$;
- ($27$ 分):$n, q \leq 2 \cdot 10^5$,且没有类型 $1$ 的查询;
- ($14$ 分):$n, q \leq 2 \cdot 10^5$;
- ($9$ 分):无额外限制。
翻译由 DeepSeek V3 完成