P6242 【模板】线段树 3(区间最值操作、区间历史最值)

题目背景

本题是线段树维护区间最值操作与区间历史最值的模板。

题目描述

给出一个长度为 $n$ 的数列 $A$,同时定义一个辅助数组 $B$,$B$ 开始与 $A$ 完全相同。接下来进行了 $m$ 次操作,操作有五种类型,按以下格式给出: - `1 l r k`:对于所有的 $i\in[l,r]$,将 $A_i$ 加上 $k$($k$ 可以为负数)。 - `2 l r v`:对于所有的 $i\in[l,r]$,将 $A_i$ 变成 $\min(A_i,v)$。 - `3 l r`:求 $\sum_{i=l}^{r}A_i$。 - `4 l r`:对于所有的 $i\in[l,r]$,求 $A_i$ 的最大值。 - `5 l r`:对于所有的 $i\in[l,r]$,求 $B_i$ 的最大值。 在每一次操作后,我们都进行一次更新,让 $B_i\gets\max(B_i,A_i)$。

输入格式

输出格式

说明/提示

#### 样例说明 \#1 #### | 操作次数 | 输入内容 | 操作 | 数列 | 输出结果 | | :----------: | :----------: | :----------: | :----------: | :----------: | | 0 | | | $1,2,3,4,5$ | | | 1 | `3 2 5` | 求出 $[2,5]$ 所有数的和 | $1,2,3,4,5$ | `14` | | 2 | `1 1 3 3` | 将 $[1,3]$ 内所有数加 $3$ | $4,5,6,4,5$ | | | 3 | `4 2 4` | 求出 $[2,4]$ 所有数的最大值 | $4,5,6,4,5$ | `6` | | 4 | `2 3 4 1` | 将 $[3,4]$ 所有数与 $1$ 取最小值 | $4,5,1,1,5$ | | | 5 | `5 1 5` | 求出 $[1,5]$ 所有位置历史最大值的最大值 | $4,5,1,1,5$ | `6` | | 6 | `3 1 4` | 求出 $[1,4]$ 所有数的和 | $4,5,1,1,5$ | `11` | #### 数据规模与约定 - 对于测试点 $1,2$,满足 $n,m\leq 5000$; - 对于测试点 $3,4$,满足 $op\in\{1,2,3,4\}$; - 对于测试点 $5,6$,满足 $op\in\{1,3,4,5\}$; - 对于全部测试数据,保证 $1\leq n,m\leq 5\times 10^5$,$-5\times10^8\leq A_i\leq 5\times10^8$,$op\in[1,5]$,$1 \leq l\leq r \leq n$,$-2000\leq k\leq 2000$,$-5\times10^8\leq v\leq 5\times10^8$。 #### 提示 #### 本题输入量较大,请使用合理高效的读入方法。