这题是你自己出的¶
时间限制:1.5 秒。内存限制:128 MiB。参考 评测环境与性能。
背景故事¶
这题明明是你自己出的,但现在完全不会做了。
形式化问题描述¶
给定长度为 \(n\) 的整数序列 \(a\) ,依次处理 \(m\) 个操作。解密后的操作为:
1 x v:令 \(a_x=v\) .2 l_1 r_1 l_2 r_2:输出满足 \(l_1\le x\le r_1\) 、\(l_2\le y\le r_2\) 且 \(a_x=a_y\) 的有序对 \((x,y)\) 数量。区间可以重叠,\(x=y\) 合法;两个方向分别计数。
令 last 为最近一次查询的答案,初始为零;修改操作不改变 last .操作行中的所有整数,包括操作类型都按下列方式编码:把实际整数 \(z\) 化为 \(z\bmod2^{64}\) 的非负余数,再与 last 做64位按位异或,输出结果的无符号十进制表示。
解码后,操作类型和下标直接作为非负整数。修改值的解码位串若小于 \(2^{63}\) ,其值不变;否则减去 \(2^{64}\) 得到负数。前两行的 \(n,m\) 和初始序列不编码。保证解密后的操作合法。
输入格式¶
第一行包含未编码的 n m .第二行包含 \(n\) 个未编码的有符号整数 \(a_i\) .接下来 \(m\) 行为编码后的操作;先解码类型,再确定该行还有2个或4个参数。所有编码字段在 \([0,2^{64}-1]\) 内。
输出格式¶
每个查询输出一行一个未编码的整数答案。答案可达到 \(n^2\) ,请使用64位整数。
样例 1¶
输入¶
4 4
-1 2 -1 2
2 1 4 1 4
9 10 18446744073709551607
10 9 11 10 12
4 4 4 4 4
输出¶
8
6
1
样例 2¶
输入¶
1 3
1000000000
2 1 1 1 1
0 0 18446744072709551617
3 0 0 0 0
输出¶
1
1
样例解释¶
样例1的明文操作依次是 (2,1,4,1,4) 、(1,2,-1) 、(2,1,3,2,4) 、(2,2,2,2,2) .首个答案为8,修改后,区间 \([1,3]\) 与 \([2,4]\) 的查询答案为6,单点与自身配对的答案为1。
两个区间可以重叠。以值分组后,各值在两个区间中的出现次数相乘,再求和。
数据范围与保证¶
\(1\le n\le10^5\) ,\(1\le m\le10^4\) ,\(|a_i|,|v|\le10^9\) ,\(1\le x\le n\) ,\(1\le l_j\le r_j\le n\) .这些范围均指实际值。
规格重新设计:Codex(GPT-6);补上初始数组输入,确定全部操作字段加密及有符号值的64位编码,固定规模。
| 分值 | 额外限制 |
|---|---|
| 20% | \(n\le50,\ m\le100\) |
| 30% | \(n,m\le2000\) |
| 50% | 无额外限制 |