相关分析
描述
Frank对天文学非常感兴趣,他经常用望远镜看星星,同时记录下它们的信息,比如亮度、颜色等等,进而估算出
星星的距离,半径等等。
Frank不仅喜欢观测,还喜欢分析观测到的数据。他经常分析两个参数之间(比如亮度和半径)是否存在某种关系。
现在Frank要分析参数\(X\)与\(Y\)之间的关系。他有n组观测数据,第i组观测数据记录了\(x_i\)和\(y_i\)。他需要一下几种操作:
1 L R:用直线拟合第L组到底R组观测数据。用\(\bar{x}\)表示这些观测数据中\(x\)的平均数,用\(\bar{y}\)表示这些观测数据中\(y\)的平均数,即
\(\bar{x}=\frac{1}{R-L+1}\sum_{i=L}^R x_i\)
\(\bar{y}=\frac{1}{R-L+1}\sum_{i=L}^R y_i\)
如果直线方程是\(y=ax+b\),那么\(a,b\)应当这样计算:
\(a=\frac{ \sum_{i=L}^R (x_i-\bar{x})(y_i-\bar{y}) }{ \sum_{i=L}^R (x_i-\bar{x})^2 }\)
\(b=\bar{y}-a\bar{x}\)
你需要帮助Frank计算\(a\)。
2 L R S T:Frank发现测量数据第\(L\)组到底\(R\)组数据有误差,对每个\(i\)满足\(L \le i \le R\),\(x_i\)需要加上\(S\),\(y_i\)需要加上\(T\)。
3 L R S T:Frank发现第\(L\)组到第\(R\)组数据需要修改,对于每个\(i\)满足\(L \le i \le R\),\(x_i\)需要修改为\((S+i)\),\(y_i\)需要修改为\((T+i)\)。
格式
输入格式
第一行两个数\(n,m\),表示观测数据组数和操作次数。
接下来一行\(n\)个数,第\(i\)个数是\(x_i\)。
接下来一行\(n\)个数,第\(i\)个数是\(y_i\)。
接下来\(m\)行,表示操作,格式见题目描述。
输出格式
对于每个1操作,输出一行,表示直线斜率\(a\)。输出保留到 小数点后3位 。
样例1
样例输入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.000
-1.500
-0.615
限制
对于20%的数据,\(1\le n,m\le 1000\)
另有20%的数据,没有3操作,且2操作中\(S=0\)
另有30%的数据,没有3操作。
对100%的数据,\(1\le n,m\le 10^5\)
对于所有数据,\(1\le L\le R\le n\),\(0\le |S|,|T|\le 10^5\),\(0\le |x_i|,|y_i|\le 10^5\)
对于所有数据,1操作中不会出现分母为0这类特殊情况。
来源
SDOI 2017 Round1 Day2