QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 512 MB Total points: 100 Hackable ✓

#17404. Binary Beaver

统计

Busy Beaver 有一个包含 $N$ 个整数的数组 $a_1, a_2, \dots, a_N$,其中 $1 \le a_i < 2^K$。作为一个程序员,他喜欢用二进制写数字!

定义一个正整数数组的“圆度”(roundness)为该数组所有元素二进制表示中末尾 $0$ 的总个数。例如,数组 $[2, 3, 6, 8, 10]$ 的二进制表示为 $[10, 11, 110, 1000, 1010]$,因此其圆度为 $1 + 0 + 1 + 3 + 1 = 6$。

Busy Beaver 可以选择一个整数 $x$,满足 $0 \le x < 2^K$ 且对于所有 $i$ 都有 $x \neq a_i$,然后将数组中的每个元素替换为 $a_i \oplus x$,其中 $\oplus$ 表示按位异或。对于当前的数组,求此操作后可能达到的最大圆度。

接着会有 $Q$ 次更新。每次查询更新 $a_i \leftarrow v$,其中 $1 \le i \le N$ 且 $1 \le v < 2^K$。注意,更新是持久的,这意味着每次更新都会修改数组,后续的更新应在当前状态的基础上进行。

输出初始数组的最大圆度,以及每次更新后的最大圆度。

输入格式

第一行包含一个整数 $T$ ($1 \le T \le 10^4$) —— 测试用例的数量。

每个测试用例的第一行包含三个空格分隔的整数 $N, Q, K$ ($1 \le N \le 2 \cdot 10^5, 0 \le Q \le 2 \cdot 10^5, 1 \le K \le 60$)。

每个测试用例的第二行包含 $N$ 个空格分隔的整数 $a_1, \dots, a_N$ ($1 \le a_i < 2^K$) —— 数组 $a$ 的成员。

接下来的 $Q$ 行,每行包含两个整数 $i$ 和 $v$ ($1 \le i \le N, 1 \le v < 2^K$),描述一次更新。

所有测试用例的 $N$ 之和不超过 $2 \cdot 10^5$。 所有测试用例的 $Q$ 之和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出 $Q + 1$ 行。

第一行应包含一个整数 —— 更新前的答案。 接下来的 $Q$ 行中,第 $i$ 行应包含第 $i$ 次更新后的答案。

子任务

本题共有三个子任务。令 $\sum N$ 表示所有测试用例中 $N$ 的总和,令 $\sum Q$ 表示所有测试用例中 $Q$ 的总和。

  • (20 分):$\sum N, \sum Q \le 1000, K \le 25$。此外,保证 $K > 1$,且对于所有 $i$ 有 $a_i < 2^{K-1}$,所有更新中 $v < 2^{K-1}$。
  • (30 分):$\sum N, \sum Q \le 1000, K \le 25$。
  • (50 分):无附加限制。

样例

输入 1

2
5 0 3
1 1 2 3 4
4 4 3
1 3 5 7
2 4
1 4
3 4
4 4

输出 1

5
0
4
4
6
8

说明

对于第一个测试用例,最优的 $x$ 值为 $x = 5$,得到 $a \oplus 5 = [4, 4, 7, 6, 1]$。圆度为 $5$。

对于第二个测试用例,在第一次更新前,由于 $x \neq a_i$ 对所有 $i$ 成立,$x$ 必须为偶数,这意味着所有的 $a \oplus x$ 均为奇数,因此答案为 $0$。第一次更新后,数组变为 $a = [1, 4, 5, 7]$。此时,$x = 3$ 提供了最优结果,得到 $a \oplus 3 = [2, 7, 6, 4]$,圆度为 $4$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.