bzoj#P4821. [Sdoi2017]相关分析

[Sdoi2017]相关分析

题目描述

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

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

现在Frank要分析参数 XXYY 之间的关系。他有 nn 组观测数据,第 ii 组观测数据记录了 xix_iyiy_i 。他需要一下几种操作

  • 1 L,R1\ L,R

用直线拟合第LL组到底RR组观测数据。用 x\overline{x} 表示这些观测数据中 xx 的平均数,用 y\overline{y} 表示这些观测数据中 yy 的平均数,即

x=1RL+1i=LRxi\overline{x}={1 \over R-L+1} \sum _{i=L} ^R x_i

y=1RL+1i=LRyi\overline{y}={1 \over R-L+1} \sum _{i=L} ^R y_i

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

$\huge a=\huge{\sum_{i=L} ^R (x_i-\overline{x})(y_i-\overline{y}) \over \sum _{i=L} ^R (x_i -\overline{x})^2}$。

你需要帮助Frank计算 aa

  • 2 L,R,S,T2\ L,R,S,T

Frank发现测量数据第 L L 组到底 RR 组数据有误差,对每个 ii 满足 LiRL \leq i \leq Rxix_i 需要加上 SSyiy_i 需要加上 TT

  • 3 L,R,S,T3\ L,R,S,T

Frank发现第 LL 组到第 RR 组数据需要修改,对于每个 ii 满足 LiRL \leq i \leq Rxix_i 需要修改为 (S+i)(S+i)yiy_i 需要修改为 (T+i)(T+i)

输入格式

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

接下来一行nn个数,第ii个数是xix_i

接下来一行nn个数,第ii个数是yiy_i

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

输出格式

对于每个1操作,输出一行,表示直线斜率aa。选手输出与标准输出的绝对误差或相对误差不超过10510^{-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,m10001 \leq n,m \leq 1000

另有 20%20\% 的数据,没有 33 操作,且 22 操作中 S=0S=0

另有 30%30\% 的数据,没有 33 操作。

对于 100%100\% 的数据,1n,m1051 \leq n,m \leq 10^50S,T1050 \leq |S|,|T| \leq 10^50xi,yi1050 \leq |x_i|,|y_i| \leq 10^5

保证 11 操作不会出现分母为 00 的情况。