P7131 「RdOI R1」变换(turn)

题目描述

有 $n$ 个变换,其中第 $i$ 个有两个属性值 $p_i$ 和 $q_i$,当这个变换作用到 $x$ 时,$x$ 将会变成 $f_i(x),f_i(x)$ 的定义为: $$f_i(x)=\left\lfloor\dfrac{x}{p_i}\right\rfloor+q_i$$ 给定 $m$ 条操作,操作分两种: **修改**操作可以修改某个变换的属性值; **查询**操作将会给定 $x$ 以及两个序号 $s$ 和 $t$,你需要计算并输出: $$f_{t}(f_{t-1}(\cdots f_{s+1}(f_{s}(x))))$$

输入格式

第一行:两个正整数表示 $n$ 和 $m$。 第二行:$n$ 个整数,表示 $p_1,p_2,\cdots,p_n$。 第三行:$n$ 个整数,表示 $q_1,q_2,\cdots,q_n$。 接下来 $m$ 行,每行表示一个操作: 修改 操作以字母 `m` 开头,后接三个参数 $i,p',q'$,表示将第 $i$ 个变换的属性值修改成 $p',q'$。保证任何时候属性都满足 $1\leq p_i\leq 1000, 0\leq q_i\leq 1000$。 查询 操作以字母 `q` 开头,后接三个参数 $x,s,t$,意义见题面,保证 $s\leq t, 0\leq x\leq 10^6$。

输出格式

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

说明/提示

【数据范围】 - 对于 $20\%$ 的数据,$1 \le n \le 10^3,1 \le m \le 10^4$。 - 对于另外 $30\%$ 的数据,$1 \le n \le 10^4,1 \le m \le 10^5$。 - 对于 $100\%$ 的数据,$1 \le n \le 10^5,1 \le m \le 2 \times 10^5$。 --- 【文件读入读出】**(模拟,提交代码时不需使用)** - 文件名:`turn.cpp` - 读入文件名:`turn.in` - 读出文件名:`turn.out`