Eyes Closed

题意翻译

给出一个 $n$ 个数的数列 $A$,每次进行以下两种操作之一: - 给出四个整数 $l_1,r_1,l_2,r_2$,保证区间 $[l_1,r_1]$ 和 $[l_2,r_2]$ 不交。从 $[l_1,r_1]$ 中随机选一个元素与 $[l_2,r_2]$ 中一个随机元素交换。 - 给出两个整数 $l,r$,求 $[l,r]$ 内元素和的期望。 **【输入格式】** 第一行包含两个整数 $n,q$,表示数组中的元素数量和需要处理的查询数量。 第二行包含 $n$ 个整数 $a_i$($1 \le a_i \le 10^9$)数组的元素。 下一个 $q$ 行表示动作 $1,2$ - 如果是类型 $1$,该行包含 $5$ 个整数 $1,l_1,r_1,l_2,r_2$($1 \le l_1 \le r_1 \le n$,$1 \le l_2 \le r_2 \le n$) - 如果是类型 $2$,该行包含 $3$ 个整数,为 $2, l, r$($1 \le l \le r \le n$) 保证至少有一种类型 $2$ 的查询操作。并且区间 $[l_1,r_1],[l_2,r_2]$ 不交。 Translated by @向noip冲刺 @ctmydf

题目描述

Vasya and Petya were tired of studying so they decided to play a game. Before the game begins Vasya looks at array $ a $ consisting of $ n $ integers. As soon as he remembers all elements of $ a $ the game begins. Vasya closes his eyes and Petya does $ q $ actions of one of two types: $ 1) $ Petya says 4 integers $ l1,r1,l2,r2 $ — boundaries of two non-intersecting segments. After that he swaps one random element from the $ [l1,r1] $ segment with another random element from the $ [l2,r2] $ segment. $ 2) $ Petya asks Vasya the sum of the elements of $ a $ in the $ [l,r] $ segment. Vasya is a mathematician so he answers Petya the mathematical expectation of the sum of the elements in the segment. Your task is to write a program which will answer the second type questions as Vasya would do it. In other words your program should print the mathematical expectation of the sum of the elements of $ a $ in the $ [l,r] $ segment for every second type query.

输入输出格式

输入格式


The first line contains two integers $ n,q $ ( $ 2<=n<=10^{5},1<=q<=10^{5} $ ) — the number of elements in the array and the number of queries you need to handle. The second line contains $ n $ integers $ a_{i} $ ( $ 1<=a_{i}<=10^{9} $ ) — elements of the array. The next $ q $ lines contain Petya's actions of type 1 or 2. If it is a type $ 1 $ action then the line contains $ 5 $ integers $ 1,l1,r1,l2,r2 $ ( $ 1<=l1<=r1<=n,1<=l2<=r2<=n $ ). If it is a type $ 2 $ query then the line contains $ 3 $ integers $ 2,l,r $ ( $ 1<=l<=r<=n $ ). It is guaranteed that there is at least one type $ 2 $ query and segments $ [l1,r1],[l2,r2] $ don't have common elements.

输出格式


For each type $ 2 $ query print one real number — the mathematical expectation of the sum of elements in the segment. Your answer will be considered correct if its absolute or relative error doesn't exceed $ 10^{-4} $ — formally, the answer is correct if ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF895E/1e3a6016727b2f57aeaab3dcbe84256bba31c89a.png) where $ x $ is jury's answer and $ y $ is yours.

输入输出样例

输入样例 #1

4 4
1 1 2 2
1 2 2 3 3
2 1 2
1 1 2 3 4
2 1 2

输出样例 #1

3.0000000
3.0000000

输入样例 #2

10 5
1 1 1 1 1 2 2 2 2 2
1 1 5 6 10
2 1 5
1 1 5 6 10
1 1 5 6 10
2 6 10

输出样例 #2

6.0000000
8.0400000

输入样例 #3

10 10
1 2 3 4 5 6 7 8 9 10
1 1 5 6 10
1 1 5 6 10
2 1 5
1 1 3 6 9
2 1 3
1 5 7 8 10
1 1 1 10 10
2 1 5
2 7 10
2 1 10

输出样例 #3

23.0000000
14.0000000
28.0133333
21.5733333
55.0000000