luogu#P10399. 『STA - R5』ReLyna

『STA - R5』ReLyna

题目背景

题目描述

你手中有一个数字 xx。走到位置 ii 时你可以将手中的数字变为 x+aix+a_ix×bix\times b_i

mm 次操作。

  • 1 x y z,执行 axya_x\gets ybxzb_x\gets z

  • 2 l r,查询若你从 [l,r][l,r] 的所有子区间中等概率选择一个子区间 [l,r][l',r'],则你从 ll' 走到 rr' 后手中的数的最大值的期望是多少?答案对 109+710^9+7 取模。每次行动开始前你手中的数字都会归零。

如果你不知道有理数如何取模,可以参考 P2613 有理数取余

可参考样例解释理解题意。

输入格式

第一行两个整数 n,mn,m

第二行 nn 个整数,第 ii 个整数代表 aia_i

第三行 nn 个整数,第 ii 个整数代表 bib_i

mm 行每行描述一次操作,格式见题目描述。

输出格式

对于每个询问,输出对应的期望。答案对 109+710^9+7 取模。

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

72
133333711
333333468

提示

样例解释

对于第一次询问,令 f(i,j)f(i,j) 为你从 ii 开始顺次走到 jj 后手中的数的最大值,则答案为 $\frac{1}{3}[f(2,2)+f(2,3)+f(3,3)]=\frac{1}{3}(52+156+8)=72$。

数据范围

子任务编号 nn mm 特殊性质 分值
Subtask #1 5050 5
Subtask #2 500500
Subtask #3 10510^5 10510^5 保证任何时刻 ai=1a_i=1 25
Subtask #4 5050
Subtask #5 10510^5 没有修改操作
Subtask #6 15

对于所有数据,1n,m1051\le n,m\le 10^50<ai<109+70<a_i<10^9+71<bi<109+71<b_i<10^9+7,保证操作合法,保证所有输入均为整数。