CF895E Eyes Closed
题目描述
Vasya 和 Petya 学习累了,决定玩一个游戏。在游戏开始前,Vasya 会看一遍长度为 $n$ 的整数数组 $a$。当他记住所有 $a$ 的元素后,游戏正式开始。Vasya 闭上眼睛,Petya 会进行 $q$ 次操作,每次操作有两种类型:
1. Petya 说出 4 个整数 $l1,r1,l2,r2$,表示两个互不相交的区间的边界。然后他会从 $[l1,r1]$ 区间中随机选取一个元素,与 $[l2,r2]$ 区间中随机选取的另一个元素进行交换。
2. Petya 询问 Vasya 在区间 $[l,r]$ 上所有元素之和是多少。
由于 Vasya 是一位数学家,他会告诉 Petya 区间中元素之和的数学期望值。
你的任务是,编写一个程序,像 Vasya 一样,回答所有类型 2 的询问,即输出每个询问所求区间的元素和的数学期望。
输入格式
第一行包含两个整数 $n$ 和 $q$($2 \leq n \leq 10^{5}, 1 \leq q \leq 10^{5}$),表示数组的长度和操作的次数。
第二行包含 $n$ 个整数 $a_{i}$($1 \leq a_{i} \leq 10^{9}$),表示数组的元素。
接下来的 $q$ 行,每行描述一次 Petya 的操作。
如果是类型 1 操作,该行包含 5 个整数 $1, l1, r1, l2, r2$($1 \leq l1 \leq r1 \leq n, 1 \leq l2 \leq r2 \leq n$)。
如果是类型 2 操作,该行包含 3 个整数 $2, l, r$($1 \leq l \leq r \leq n$)。
保证至多有 $10^5$ 次操作,且至少有一次类型 2 的操作。保证区间 $[l1, r1]$ 与 $[l2, r2]$ 没有相交的元素。
输出格式
对于每一个类型 2 的询问,输出一个实数,表示 $[l,r]$ 区间内元素之和的数学期望值。
你的答案将被认为是正确的,当且仅当其绝对误差或相对误差不超过 $10^{-4}$。换句话说,设 $x$ 为标准答案,$y$ 为你的答案,若 $|x-y| \leq 10^{-4} \max(1,|x|)$,则视为正确。
说明/提示
由 ChatGPT 5 翻译