C0609 [SDOI2017]相关分析

内存限制:256 MB 时间限制:1000 ms

题目描述

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

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

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

*$\texttt{1 L R}$

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

$\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$

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

$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}$

你需要帮助 Frank 计算 $ a $。

*$\texttt{2 L R S T}$

Frank 发现测量第 $ L $ 组到第 $ R $ 组数据时有误差,对于每个 $ i $ 满足 $ L \leq i \leq R $,$ x_i $ 需要加上 $ S $,$ y_i $ 需要加上 $ T $。

*$\texttt{3 L R S T}$

Frank 发现第 $ L $ 组到第 $ R $ 组数据需要修改,对于每个 $ i $ 满足 $ L \leq i \leq R $,$ x_i $ 需要修改为 $ (S + i) $,$ y_i $ 需要修改为 $ (T + i) $。

输入格式

第一行两个数 $n$、$m$,表示观测数据组数和操作次数。

接下来一行 $n$ 个数,第 $i$ 个数是 $x_i$。

接下来一行 $n$ 个数,第 $i$ 个数是 $y_i$。

接下来 $m$ 行,表示操作,格式见题目描述。

输出

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

样例

样例输入 1

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

1.0000000000 -1.5000000000 -0.6153846154

提示

对于 $20\%$ 的数据,$1 \leq n, m \leq 1000$;

对于另外 $20\%$ 的数据没有 $3$ 操作,且 $2$ 操作中 $S = 0$;

对于另外 $30\%$ 的数据没有 $3$ 操作;

对于 $100\%$的数据,$1 \leq n, m \leq 10 ^ 5$;

对于所有数据,$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$ 这类特殊情况。