P16525 一如陌上尘
题目背景
>或真亦或伪?飘如陌上尘。
题目描述
对于长度为 $n$ 的序列 $a$,有以下三种操作:
- 选定两个数 $1\le l\le r\le n$,使得 $a_{l\sim r}$ 减一,消耗一点代价。
- 选定一个数 $1\le k\le n$,使得 $a_{k\sim n}$ 减一,不消耗代价。
- 选定一个数 $1\le k\le n$,使得 $a_{1\sim k}$ 减一,不消耗代价。
需要通过若干次操作将 $a$ 的每个元素变为同一个非负整数 $p$,设消耗的总代价为 $m$。记 $f(a)$ 为所有可行方案中 $m-p$ 的最小值。
有一个长为 $n$ 的序列 $v$,有 $q$ 次操作,每次为其中之一:
1. 修改操作。给出三个数 $l,r,x$,将 $v_{l\sim r}$ 修改为 $x$。
2. 询问操作。给出两个数 $l,r$,询问所有长度为 $r-l+1$,满足 $0\le a_i\le v_{i+l-1}$ 的序列 $a$,其 $f(a)$ 的和。
输入格式
第一行输入两个数 $n,q$。
第二行输入 $n$ 个数,第 $i$ 个数表示 $v_i$。
接下来 $q$ 行,第一个数为 $op\in [1,2]$ 表示操作类型,若 $op=1$,接下来输入三个数 $l,r,x$,表示一次修改;否则输入两个数 $l,r$,表示一次询问。
输出格式
输出若干行,对应每次询问的答案,对 $10^9+7$ 取模。
说明/提示
**本题 I/O 量较大,请使用较快的 I/O 方式。**
### 样例解释:
对于第一个询问,序列 $a$ 可以为 $\{0,0\},\{0,1\},\{0,2\},\{1,0\},\{1,1\},\{1,2\}$,$f(a)$ 分别为 $0,0,0,0,-1,-1$,和为 $-2$,在模 $10^9+7$ 意义下为 $1000000005$。
### 数据范围:
| Subtask |分值 | $n \le$ | $q \le$ | $v_i \le$ | $x \le$ | 特殊性质 |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| $1$ |$ 20$ | $10$ | < | $3$ | < | 无 |
| $ 2 $ |$ 15$ | $200$ | < | $500$ | < | ^ |
|$ 3$ |$ 5$ | $2 \times 10^3$ | < | $10^9$ | < | A|
| $ 4$ | $ 15 $ | ^ | ^ | ^ | ^ | 无 |
| $ 5$ |$ 10 $ | $2\times 10^4$ |< |^|^|B|
| $ 6$ | $ 15$ | $2 \times 10^5$ | < | ^ | ^ | ^ |
| $ 7 $ | $ 20$ | ^ | ^ | ^ | ^ | 无 |
对于 $100\%$ 的数据,保证:
$2\le n\le 2\times 10^5$,$1\le q\le 2\times 10^5$,$0\le v_i,x\le 10^9$,$1\le l