#P7131. 「RdOI R1」变换(turn)

「RdOI R1」变换(turn)

题目描述

nn 个变换,其中第 ii 个有两个属性值 pip_iqiq_i,当这个变换作用到 xx 时,xx 将会变成 fi(x),fi(x)f_i(x),f_i(x) 的定义为:

$$f_i(x)=\left\lfloor\dfrac{x}{p_i}\right\rfloor+q_i $$

给定 mm 条操作,操作分两种:

修改操作可以修改某个变换的属性值;

查询操作将会给定 xx 以及两个序号 sstt,你需要计算并输出:

ft(ft1(fs+1(fs(x))))f_{t}(f_{t-1}(\cdots f_{s+1}(f_{s}(x))))

输入格式

第一行:两个正整数表示 nnmm

第二行:nn 个整数,表示 p1,p2,,pnp_1,p_2,\cdots,p_n

第三行:nn 个整数,表示 q1,q2,,qnq_1,q_2,\cdots,q_n

接下来 mm 行,每行表示一个操作:

修改 操作以字母 m 开头,后接三个参数 i,p,qi,p',q',表示将第 ii 个变换的属性值修改成 p,qp',q'。保证任何时候属性都满足 1pi1000,0qi10001\leq p_i\leq 1000, 0\leq q_i\leq 1000

查询 操作以字母 q 开头,后接三个参数 x,s,tx,s,t,意义见题面,保证 st,0x106s\leq t, 0\leq x\leq 10^6

输出格式

对每个询问操作,输出一个整数,表示所求的答案,以换行分隔。

3 3
2 1 2
1 1 1
q 100 1 3
m 2 2 0
q 100 1 3
27
13
见附件中的 turn-big-sample1.in
见附件中的 turn-big-sample1.out

提示

【数据范围】

  • 对于 20%20\% 的数据,1n103,1m1041 \le n \le 10^3,1 \le m \le 10^4
  • 对于另外 30%30\% 的数据,1n104,1m1051 \le n \le 10^4,1 \le m \le 10^5
  • 对于 100%100\% 的数据,1n105,1m2×1051 \le n \le 10^5,1 \le m \le 2 \times 10^5

【文件读入读出】(模拟,提交代码时不需使用)

  • 文件名:turn.cpp
  • 读入文件名:turn.in
  • 读出文件名:turn.out