P17849 「RiOI-(-2)」houran 和序列 / [USACO26FEB] Milk Buckets S 加强版

题目描述

houran 有一个长度为 $n$ 的正整数序列,第 $i$ 个元素为 $a_i$。 houran 想要知道这个序列所有数的乘积。但是 houran 不喜欢太大的数。具体地,houran 有一个接受的值域上限 $V$。 他会对序列进行 $m$ 单点修改操作。在所有修改操作前与每次操作过后,设所有数的乘积为 $X$: - 若 $X

输入格式

第一行三个正整数 $n,m,V$。 接下来一行 $n$ 个正整数 $a_i$。 接下来 $m$ 行,每行两个数 $x,y$,表示进行了一次操作,将 $a_x$ 的值修改为 $y$。

输出格式

输出一行一个整数,表示所有答案的异或和。

说明/提示

下发文件过大,故没有上传。 ### 【样例 $1$ 解释】 在操作二之后,序列中所有数的乘积一直大于 $V$,因此答案应为 $2\oplus3=1$。 ### 【样例 $2$】 见选手目录下的 `query/query2.in` 与 `query/query2.ans`。 该样例满足测试点 $1,2$ 的约束条件。 ### 【样例 $3$】 见选手目录下的 `query/query3.in` 与 `query/query3.ans`。 该样例满足测试点 $7\sim9$ 的约束条件。 ### 【样例 $4$】 见选手目录下的 `query/query4.in` 与 `query/query4.ans`。 该样例满足测试点 $10,11$ 的约束条件。 ### 【样例 $5$】 见选手目录下的 `query/query5.in` 与 `query/query5.ans`。 该样例满足测试点 $12,13$ 的约束条件。 ### 【样例 $6$】 见选手目录下的 `query/query6.in` 与 `query/query6.ans`。 该样例满足测试点 $14$ 的约束条件。 ### 【样例 $7$】 见选手目录下的 `query/query7.in` 与 `query/query7.ans`。 该样例满足测试点 $15\sim20$ 的约束条件。 ### 【数据范围】 对于所有测试数据,均有: - $1\le n,m\le5\times10^6$,$2\le V\le10^9$; - 对于所有 $1\le i\le n$,均有 $1\le a_i\le V$; - 对于所有修改操作,均有 $1\le x\le n$,$1\le y\le V$; ::cute-table{tuack} | 测试点编号 | $n\le$ | $m\le$ | $V\le$ | 特殊性质 | |:-:|:-:|:-:|:-:|:-:| | $1,2$ | $3000$ | $3000$ | $10^9$ | 无 | | $3$ | $5\times10^5$ | $5\times10^5$ | ^ | ^ | | $4\sim6$ | $10^6$ | $10^6$ | ^ | ^ | | $7\sim9$ | $2\times10^6$ | $2\times10^6$ | ^ | ^ | | $10,11$ | $5\times10^6$ | $5\times10^6$ | $10$ | ^ | | $12,13$ | ^ | ^ | $1000$ | ^ | | $14$ | ^ | ^ | $10^9$ | $A$ | | $15\sim20$ | ^ | ^ | ^ | 无 | 特殊性质 $A$:对于每次进行修改操作时,均有 $a_x \le y$。 **请注意常数因子对程序效率的影响。** 本题读入量巨大,我们下发了一个基于 `fread` 的快读模板。选手可以查看下发文件中的 `query/fastIO.cpp`,其中的 `read()` 函数可以用于读入一个非负整形变量。 ```cpp #include char buf[1 = '0' && c