[KMOI R1] 五五五五(Hard)
题目背景
“事类相推,各有攸归,故枝条虽分而同本干知,发其一端而已。又所析理以辞,解体用图,庶亦约而能周,通而不黩,览之者思过半矣。”——刘徽
题目描述
小宋有一个序列 $A=\{a_1,a_2\dots,a_n\}$,其中 $\forall i\in [1,n],a_i\in[0,9]$。
对于 $1\le l\le r\le n$,他记 $f(l,r)$ 等于 $\overline{a_la_{(l+1)}\dots a_r}$ 的末尾连续 $5$ 的个数。
例如:对于序列 $a=\{1,1,4,5,1,4\}$,$f(2,4)=1,f(1,3)=0$。
不过小宋会对这个序列不断地操作,具体地,他会做以下操作:
- $(1,x,y)$:将第 $x$ 个数改为 $y$($x\in[1,n],y\in[0,9]$)。
- $2$: 将序列 $a$ 反转,例如 $\{1,1,4,5\}$ 反转之后就是 $\{5,4,1,1\}$。
- $3$:对序列进行询问。
- $(4,l,r)$:对序列进行询问。
对于每一种操作 $3$,请你输出:
$$\Big(\sum\limits_{l=1}^
{n}\sum\limits_{r=l}^{n} f(l,r)\Big) \bmod 10^9+7$$
对于每一个操作 $4$,请你输出:
$$\Big(\sum\limits_{i=l}^{r}a_i\Big) \bmod 10^9+7$$
输入输出格式
输入格式
第一行两个正整数 $n,q$,表示序列的数个数和询问的个数。
第二行 $n$ 个整数 $a_1, a_2,\dots a_n$,表示序列 $A$。
接下来 $q$ 行,每行一个或三个正整数,表示一次操作。
输出格式
对于每一次操作 $3$ 和操作 $4$,输出答案。
输入输出样例
输入样例 #1
3 4
1 5 5
1 3 3
3
1 1 5
4 1 3
输出样例 #1
2
13
输入样例 #2
6 5
1 1 4 5 1 4
3
2
3
1 1 5
4 1 4
输出样例 #2
4
3
15
说明
## 样例 $1$ 解释:
| 操作 | 操作后的序列 | 答案 |
| :----------: | :----------: | :----------: |
| $(1,3,3)$ | $\{1,5,3\}$ | $/$ |
| $3$ | $/$ | $2$ |
| $(1,1,5)$ | $\{5,5,3\}$ | $/$ |
| $(4,1,3)$ | $/$ | $13$ |
## 样例 $2$ 解释:
| 操作 | 操作后的序列 | 答案 |
| :----------: | :----------: | :----------: |
| $3$ | $/$ | $4$ |
| $2$ | $\{4,1,5,4,1,1\}$ | $/$ |
| $3$ | $/$ | $3$ |
| $(1,1,5)$ | $\{5,1,5,4,1,1\}$ | $/$ |
|$(4,1,4)$|$/$|$15$|
## 数据范围
| 测试点编号 | $n\le$ |$q\le$| 特殊性质 |
| :----------: | :----------: | :----------: | :----------: |
|$1$|$100$|$100$|$/$|
|$2,3$|$10^3$|$10^3$|$\mathbf{A}$|
|$4$|$10^3$|$10^3$|$\mathbf{B}$|
|$5\sim10$|$2\times 10^5$|$2\times 10^5$|$/$|
|$11\sim13$|$2\times 10^5$|$2\times 10^5$|$\mathbf{A}$|
|$14,15$|$2\times 10^5$|$2\times 10^5$|$/$|
|$16\sim18$|$5\times 10^5$|$5\times 10^5$|$\mathbf{B}$|
|$19\sim25$|$5\times 10^5$|$5\times 10^5$|$/$|
特殊性质 $\mathbf{A}:$ 没有操作 $2$。
特殊性质 $\mathbf{B}:$ 没有操作 $3$。
对于 $100\%$ 的数据:$1\le n\le 5\times 10^5$,$1\le q\le 5\times 10^5$。
$\forall i\in [1,n]$,满足 $a_i\in[0,9]$。