编程题
相关分析
### 题目描述
Frank对天文学非常感兴趣,他经常用望远镜看星星,同时记录下它们的信息,比如亮度、颜色等等,进而估算出星星的距离,半径等等。
Frank不仅喜欢观测,还喜欢分析观测到的数据。他经常分析两个参数之间(比如亮度和半径)是否存在某种关系。
现在Frank要分析参数$X$与$Y$之间的关系。他有$n$组观测数据,第$i$组观测数据记录了$x_i$和$y_i$。他需要一下几种操作
- 1 $L,R$:
用直线拟合第$L$组到底$R$组观测数据。用$\overline{x}$表示这些观测数据中$x$的平均数,用$\overline{y}$表示这些观测数据中$y$的平均数,即
$\overline{x}={1 \over R-L+1} \sum _{i=L} ^R x_i$
$\overline{y}={1 \over R-L+1} \sum _{i=L} ^R y_i$
如果直线方程是$y=ax+b$,那么$a,b$应当这样计算:
$a={\sum_{i=L} ^R (x_i-\overline{x})(y_i-\overline{y}) \over \sum _{i=L} ^R (x_i -\overline{x})^2}$
你需要帮助Frank计算$a$。
- 2 $L,R,S,T$:
Frank发现测量数据第$L$组到底$R$组数据有误差,对每个$i$满足$L \leq i \leq R$,$x_i$需要加上$S$,$y_i$需要加上$T$。
- 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 \leq n,m \leq 10^5,0 \leq |S|,|T| \leq 10^5,0 \leq |x_i|,|y_i| \leq 10^5$
保证1操作不会出现分母为$0$的情况。
### 输出描述
对于每个1操作,输出一行,表示直线斜率$a$。选手输出与标准输出的绝对误差或相对误差不超过$10^{-5}$即为正确。
### 输入输出样例
#### 示例 1
>输入
```txt
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
```
>输出
```txt
1.0000000000
-1.5000000000
-0.6153846154
```