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$。
第二行包含 $n$ 个整数 $a_i$。
接下来 $m$ 行,第一个数为 $op_i$ 表示操作类型,接下来两个数为 $l_i,r_i$,表示修改或询问的区间。如果为 $1,2$ 操作,则还有一个整数 $k_i$。
输出
对于每次询问输出一行,表示对询问的回答。