#P50156. 「SDOI2017」相关分析

「SDOI2017」相关分析

题目描述

Frank 对天文学非常感兴趣,他经常用望远镜看星星, 同时记录下它们的信息,比如亮度、颜色等等,进而估算出星星的距离、半径等等。

Frank 不仅喜欢观测,还喜欢分析观测到的数据。他经常分析两个参数之间 (比如亮度和半径) 是否存在某种关系。

现在 Frank 要分析参数 X X Y Y 之间的关系。他有 n n 组观测数据,第 i i 组观测数据记录了 xi x_i yi y_i 。他需耍进行以下几种操作:

  • 1 L R \texttt{1 L R}
    用直线拟合第 L L 组到第 R R 组观测数据。用 xˉ \bar x 表示这些观测数据中 x x 的平均数,用 yˉ \bar y 表示这些观测数据中 y y 的平均数,即

    xˉ=1RL+1i=LRxiyˉ=1RL+1i=LRyi\begin{aligned} \bar{x} &= \frac{1}{R - L + 1} \sum\limits_{i = L} ^ R x_i \\ \bar{y} &= \frac{1}{R - L + 1} \sum\limits_{i = L} ^ R y_i \end{aligned}

    如果直线方程是 y=ax+b y = ax + b ,那么 a a b b 应该这样计算:

    a=i=LR(xixˉ)(yiyˉ)i=LR(xixˉ)2b=yˉaxˉ\begin{aligned} a &= \frac{\sum\limits_{i = L} ^ R (x_i - \bar{x})(y_i - \bar{y})}{\sum\limits_{i = L} ^ R (x_i - \bar{x}) ^ 2} \\ b &= \bar{y} - a \bar{x} \end{aligned}

    你需要帮助 Frank 计算 a a

  • 2 L R S T \texttt{2 L R S T}
    Frank 发现测量第 L L 组到第 R R 组数据时有误差,对于每个 i i 满足 LiR L \leq i \leq R xi x_i 需要加上 S S yi y_i 需要加上 T T

  • 3 L R S T \texttt{3 L R S T}
    Frank 发现第 L L 组到第 R R 组数据需要修改,对于每个 i i 满足 LiR L \leq i \leq R xi x_i 需要修改为 (S+i) (S + i) yi y_i 需要修改为 (T+i) (T + i)

输入格式

第一行两个数 n n m m ,表示观测数据组数和操作次数。
接下来一行 n n 个数,第 i i 个数是 xi x_i
接下来一行 n n 个数,第 i i 个数是 yi y_i
接下来 m m 行,表示操作,格式见题目描述。

输出格式

对于每个 1 操作,输出一行,表示直线斜率 a a 。选手输出与标准输出的绝对误差或相对误差不超过 105 10 ^ {-5} 即为正确。

样例

3 5
1 2 3
1 2 3
1 1 3
2 2 3 -3 2
1 1 2
3 1 2 2 1
1 1 3
1.0000000000
-1.5000000000
-0.6153846154

数据范围与提示

对于 20% 20\% 的数据,1n,m1000 1 \leq n, m \leq 1000
对于另外 20% 20\% 的数据没有 3 操作,且 2 操作中 S=0 S = 0
对于另外 30% 30\% 的数据没有 3 操作;
对于 100% 100\% 的数据,1n,m105 1 \leq n, m \leq 10 ^ 5
对于所有数据,1LRn,0S,T105,0xi,yi105 1 \leq L \leq R \leq n, 0 \leq |S|, |T | \leq 10 ^ 5, 0 \leq |x_i|, |y_i| \leq 10 ^ 5
对于所有数据,1 操作中不会出现分母为 0 0 这类特殊情况。