『STA - R5』ReLyna
题目背景
![](https://pic.imgdb.cn/item/661a29dd68eb93571321ac89.webp)
题目描述
你手中有一个数字 $x$。走到位置 $i$ 时你可以将手中的数字变为 $x+a_i$ 或 $x\times b_i$。
有 $m$ 次操作。
- `1 x y z`,执行 $a_x\gets y$,$b_x\gets z$。
- `2 l r`,查询若你从 $[l,r]$ 的所有子区间中等概率选择一个子区间 $[l',r']$,则你从 $l'$ 走到 $r'$ 后手中的数的最大值的期望是多少?答案对 $10^9+7$ 取模。每次行动开始前你手中的数字都会归零。
如果你不知道有理数如何取模,可以参考 [P2613 有理数取余](https://www.luogu.com.cn/problem/P2613)。
可参考样例解释理解题意。
输入输出格式
输入格式
第一行两个整数 $n,m$。
第二行 $n$ 个整数,第 $i$ 个整数代表 $a_i$。
第三行 $n$ 个整数,第 $i$ 个整数代表 $b_i$。
后 $m$ 行每行描述一次操作,格式见题目描述。
输出格式
对于每个询问,输出对应的期望。答案对 $10^9+7$ 取模。
输入输出样例
输入样例 #1
5 4
48 52 8 27 34
3 4 3 2 2
2 2 3
2 1 5
1 1 34 4
2 1 3
输出样例 #1
72
133333711
333333468
说明
**样例解释**
对于第一次询问,令 $f(i,j)$ 为你从 $i$ 开始顺次走到 $j$ 后手中的数的最大值,则答案为 $\frac{1}{3}[f(2,2)+f(2,3)+f(3,3)]=\frac{1}{3}(52+156+8)=72$。
**数据范围**
| 子任务编号 | $n$ | $m$ | 特殊性质 | 分值 |
| :-----------: | :-----------: | :-----------: | :-----------: | :-----------: |
| Subtask #1 | $50$ | $50$ | 无 | 5 |
| Subtask #2 | $500$ | $500$ | 无 | 5 |
| Subtask #3 | $10^5$ | $10^5$ | 保证任何时刻 $a_i=1$ | 25 |
| Subtask #4 | $10^5$ | $50$ | 无 | 25 |
| Subtask #5 | $10^5$ | $10^5$ | 没有修改操作 | 25 |
| Subtask #6 | $10^5$ | $10^5$ | 无 | 15 |
对于所有数据,$1\le n,m\le 10^5$,$0<a_i<10^9+7$,$1<b_i<10^9+7$,保证操作合法,保证所有输入均为整数。