#P16525. 一如陌上尘

    ID: 15823 Type: RemoteJudge 1000ms 512MiB Tried: 0 Accepted: 0 Difficulty: 8 Uploaded By: Tags>数学线段树O2优化差分

一如陌上尘

题目背景

或真亦或伪?飘如陌上尘。

题目描述

对于长度为 nn 的序列 aa,有以下三种操作:

  • 选定两个数 1lrn1\le l\le r\le n,使得 alra_{l\sim r} 减一,消耗一点代价。
  • 选定一个数 1kn1\le k\le n,使得 akna_{k\sim n} 减一,不消耗代价。
  • 选定一个数 1kn1\le k\le n,使得 a1ka_{1\sim k} 减一,不消耗代价。

需要通过若干次操作将 aa 的每个元素变为同一个非负整数 pp,设消耗的总代价为 mm。记 f(a)f(a) 为所有可行方案中 mpm-p 的最小值。

有一个长为 nn 的序列 vv,有 qq 次操作,每次为其中之一:

  1. 修改操作。给出三个数 l,r,xl,r,x,将 vlrv_{l\sim r} 修改为 xx
  2. 询问操作。给出两个数 l,rl,r,询问所有长度为 rl+1r-l+1,满足 0aivi+l10\le a_i\le v_{i+l-1} 的序列 aa,其 f(a)f(a) 的和。

输入格式

第一行输入两个数 n,qn,q

第二行输入 nn 个数,第 ii 个数表示 viv_i

接下来 qq 行,第一个数为 op[1,2]op\in [1,2] 表示操作类型,若 op=1op=1,接下来输入三个数 l,r,xl,r,x,表示一次修改;否则输入两个数 l,rl,r,表示一次询问。

输出格式

输出若干行,对应每次询问的答案,对 109+710^9+7 取模。

3 6
1 2 3
2 1 2
1 3 3 2
2 2 3
2 1 3
1 1 2 4
2 1 3
1000000005
1000000002
2
5

提示

本题 I/O 量较大,请使用较快的 I/O 方式。

样例解释:

对于第一个询问,序列 aa 可以为 {0,0},{0,1},{0,2},{1,0},{1,1},{1,2}\{0,0\},\{0,1\},\{0,2\},\{1,0\},\{1,1\},\{1,2\}f(a)f(a) 分别为 0,0,0,0,1,10,0,0,0,-1,-1,和为 2-2,在模 109+710^9+7 意义下为 10000000051000000005

数据范围:

Subtask 分值 nn \le qq \le viv_i \le xx \le 特殊性质
11 20 20 1010 < 33 <
2 2 15 15 200200 500500 ^
3 3 5 5 2×1032 \times 10^3 10910^9 A
4 4 15 15 ^ ^
5 5 10 10 2×1042\times 10^4 < B
6 6 15 15 2×1052 \times 10^5 ^
7 7 20 20 ^

对于 100%100\% 的数据,保证: 2n2×1052\le n\le 2\times 10^51q2×1051\le q\le 2\times 10^50vi,x1090\le v_i,x\le 10^91l<rn1\le l<r \le nopt[1,2]opt\in[1,2]

特殊性质 A:数据中任意时刻 viv_i 单调不降。

特殊性质 B:数据中不包含修改操作。