1315: 序列维护神

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:3 解决:0

题目描述

### 题目背景


裸体意味着身体。

### 题目描述


给定一个长度为 $n$ 的序列,初始每位为 $a_i$,你需要支持以下操作:

1. 将 $[l_i,r_i]$ 内的数加上 $k_i$。即 $\forall j \in [l_i,r_i],a_j \leftarrow a_j+k_i$

2. 将 $[l_i,r_i]$ 内的数修改为 $k_i$。即 $\forall j \in [l_i,r_i],a_j \leftarrow k_j$

3. 将 $[l_i,r_i]$ 取反。即 $\forall j \in [l_i,r_i],a_j \leftarrow -a_j$

4. 询问 $[l_i,r_i]$ 的和。和为 $\sum^{r_i}_{j=l_i} a_j$。

5. 询问 $[l_i,r_i]$ 的绝对和。绝对和为 $\sum^{r_i}_{j=l_i} \lvert a_j \rvert$。

6. 询问 $[l_i,r_i]$ 的积,保证查询的积不超过`int`范围。积为 $\prod^{r_i}_{j=l_i} a_j$。

7. 询问 $[l_i,r_i]$ 的绝对积,保证查询的绝对积不超过`int`范围。绝对积为 $\prod^{r_i}_{j=l_i} \lvert a_j \rvert$。

8. 询问 $[l_i,r_i]$ 的最小值。

9. 询问 $[l_i,r_i]$ 的最大值。

10. 询问 $[l_i,r_i]$ 的次小值,这里次小值是指将整个区间升序排序后,排在第二位的值。如果区间长度小于 $2$,输出`NONE`。

11. 询问 $[l_i,r_i]$ 的次大值,这里次大值是指将整个区间降序排序后,排在第二位的值。如果区间长度小于 $2$,输出`NONE`。

12. 询问 $[l_i,r_i]$ 的极差。

13. 询问 $[l_i,r_i]$ 的`0`个数。

14. 询问 $[l_i,r_i]$ 的正数个数。

15. 询问 $[l_i,r_i]$ 的负数个数。

16. 询问 $[l_i,r_i]$ 的调和平均数 $H_{l_i,r_i}$,保留两位小数。记询问区间的长度为 $n$,调和平均数为 ${n \over \sum^{r_i}_{j=l_i} {1 \over a_j}}$,即 ${n \over {1 \over a_{l_i}}+{1 \over a_{l_i+1}}+ \cdots +{1 \over a_{r_i-1}}+{1 \over a_{r_i}}}$,如果这个区间内存在 $0$,则输出`NONE`。

17. 询问 $[l_i,r_i]$ 的几何平均数 $G_{l_i,r_i}$,保留两位小数。记询问区间的长度为 $n$,几何平均数为 $\sqrt[n]{\prod^{r_i}_{j=l_i} a_j}$,即 $\sqrt[n]{a_{l_i}a_{l_i+1} \cdots a_{r_i-1}a_{r_i}}$,保证查询的 $\prod^{r_i}_{j=l_i} a_j$ 不超过`int`范围,如果 $\prod^{r_i}_{j=l_i} a_j$ 为负数,输出`NONE`。

18. 询问 $[l_i,r_i]$ 的算术平均数 $A_{l_i,r_i}$,保留两位小数。记询问区间的长度为 $n$,算数平均数为 ${\sum^{r_i}_{j=l_i} a_j \over n}$,即 ${a_{l_i}+a_{l_i+1}+ \cdots + a_{r_i-1}+a_{r_i} \over n}$。

19. 询问 $[l_i,r_i]$ 的平方平均数 $Q_{l_i,r_i}$,保留两位小数。记询问区间的长度为 $n$,平方平均数为 $\sqrt{\sum^{r_i}_{j=l_i} a^2_j \over n}$,即 $\sqrt{a^2_{l_i}+a^2_{l_i+1}+ \cdots + a^2_{r_i-1}+a^2_{r_i} \over n}$。

20. 询问 $[l_i,r_i]$ 的方差 $S^2_{l_i,r_i}$,保留两位小数。方差为 $\sum^{r_i}_{j=l_i} (a_j-A_{l_i,r_i})^2 $。

21. 询问 $[l_i,r_i]$ 的标准差 $S_{l_i,r_i}$,保留两位小数。标准差为 $\sqrt{S^2_{l_i,r_i}}$。

22. 询问 $[l_i,r_i]$ 的区间与。区间与为 $\bigcup^{r_i}_{j=l_i} a_j$。

23. 询问 $[l_i,r_i]$ 的区间或。区间或为 $\bigcap^{r_i}_{j=l_i} a_j$。

24. 询问 $[l_i,r_i]$ 的区间异或和。区间异或和为 $\bigoplus^{r_i}_{j=l_i} a_j$。

输入

输入的第一行两个正整数 $n, m$,表示序列初始长度,操作个数。

第二行包含 $n$ 个整数 $a_i$。

接下来 $m$ 行,第一个数为 $op_i$ 表示操作类型,接下来两个数为 $l_i,r_i$,表示修改或询问的区间。如果为 $1,2$ 操作,则还有一个整数 $k_i$。

输出

对于每次询问输出一行,表示对询问的回答。