QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 512 MB 總分: 100

#6984. 异或排序

统计

给定一个整数 $S$ 和一个包含 $N$ 个非负整数的数组 $A$(下标从 1 开始)。你可以对数组执行以下操作:选择任意下标 $i$ ($1 \le i \le N$),选择其相邻的一个下标 $j$ ($1 \le j \le N$,且满足 $j = i - 1$ 或 $j = i + 1$),并将 $A_i$ 替换为 $(A_i \oplus A_j)$,其中 $\oplus$ 表示按位异或运算。异或的定义见题目末尾。

你的目标是将 $A$ 转换为一个有序数组: 若 $S = 1$,则最终数组必须严格递增,即对于 $1 \le i < N$,满足 $A_i < A_{i+1}$。 若 $S = 2$,则最终数组必须非递减,即对于 $1 \le i < N$,满足 $A_i \le A_{i+1}$。

请找出任意一组能达到目标的合法操作序列。你不需要最小化操作次数,只要总操作次数不超过 $40000$ 即可。

输入格式

第一行包含两个整数 $N$ 和 $S$。 第二行包含 $N$ 个整数,即数组 $A$ 的元素。

输出格式

第一行输出一个整数 $K$ ($0 \le K \le 40000$),表示操作次数。 接下来的 $K$ 行,每行包含两个整数,按时间顺序描述操作:第一个整数为被替换元素的下标 $i$,第二个整数为参与运算的另一个元素的下标 $j$。

数据范围

  • $1 \le S \le 2$
  • $2 \le N \le 1000$
  • $0 \le A_i < 2^{20}$

子任务

  1. (25 分) $2 \le N \le 150, S = 1$,数组 $A$ 中所有元素互不相同。
  2. (35 分) $2 \le N \le 200, S = 1$,数组 $A$ 中所有元素互不相同。
  3. (40 分) $2 \le N \le 1000, S = 2$。

样例

样例输入 1

5 1
3 2 8 4 1

样例输出 1

3
1 2
4 3
5 4

说明 1

$[3, 2, 8, 4, 1] \to [1, 2, 8, 4, 1] \to [1, 2, 8, 12, 1] \to [1, 2, 8, 12, 13]$

样例输入 2

5 2
4 4 2 0 1

样例输出 2

3
3 2
4 3
5 4

说明 2

$[4, 4, 2, 0, 1] \to [4, 4, 6, 0, 1] \to [4, 4, 6, 6, 1] \to [4, 4, 6, 6, 7]$

当对 $a$ 和 $b$ 的位进行异或运算时,若 $a=b$ 则结果为 $0$,否则为 $1$。 当对整数 $a$ 和 $b$ 进行按位异或运算时,结果是对每一位分别进行异或运算: $75 \oplus 29 = 86$ $1001011 \oplus 0011101 = 1010110$

在 C/C++/Java 中,可以使用 ^ 运算符执行异或操作。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.