QOJ.ac

QOJ

Límite de tiempo: 6 s Límite de memoria: 5120 MB Puntuación total: 10

#10234. 集合 2

Estadísticas

在本题中,我们将考虑集合 $\{1, \dots, n\}$ 的 $n + m$ 个子集构成的序列。集合 $A_1, \dots, A_n$ 定义如下:值 $1 \le i \le n$ 属于集合 $A_j$ 当且仅当 $i$ 能被 $j$ 整除。

例如,对于 $n = 7$,各集合如下: $A_1 = \{1, 2, 3, 4, 5, 6, 7\}$ $A_2 = \{2, 4, 6\}$ $A_3 = \{3, 6\}$ $A_4 = \{4\}$ $A_5 = \{5\}$ $A_6 = \{6\}$ * $A_7 = \{7\}$

后续的 $m$ 个集合 $A_{n+1}, A_{n+2}, \dots, A_{n+m}$ 由对之前集合进行的并集、交集或补集运算产生。 集合 $A_i$ 与 $A_j$ 的并集运算(记作 $A_i \cup A_j$)生成包含所有属于 $A_i$ 或 $A_j$ 的数字的集合。 集合 $A_i$ 与 $A_j$ 的交集运算(记作 $A_i \cap A_j$)生成包含所有同时属于 $A_i$ 和 $A_j$ 的数字的集合。 * 集合 $A_i$ 的补集运算(记作 $A_i'$)生成包含所有 $1 \le j \le n$ 且不属于 $A_i$ 的整数的集合。

给定整数 $n$ 和目标集合 $B$,你的任务是选择一个整数 $m$ ($0 \le m \le 100\,000$) 以及一个包含 $m$ 次操作的序列,使得集合 $A_{n+m}$ 等于集合 $B$。可以证明,在题目给定的限制条件下,总是可以构造出 $\{1, \dots, n\}$ 的任意子集,且操作次数在限制范围内。

输入格式

输入的第一行包含两个整数 $n, s$ ($1 \le n \le 50\,000, 1 \le s \le n$),分别表示初始集合的数量和目标集合 $B$ 的大小。第二行包含 $s$ 个整数 $b_1, b_2, \dots, b_s$ ($1 \le b_1 < b_2 < \dots < b_s \le n$),表示集合 $B$ 中的元素。

输出格式

第一行输出一个整数 $m$ ($0 \le m \le 100\,000$)。接下来的 $m$ 行应描述后续的操作。第 $i$ 行描述集合 $A_{n+i}$ 的生成方式,格式为以下三种之一: 1 x y —— 表示并集运算 $A_{n+i} = A_x \cup A_y$ 2 x y —— 表示交集运算 $A_{n+i} = A_x \cap A_y$ * 3 x —— 表示补集运算 $A_{n+i} = A_x'$

此外,必须满足 $A_{n+m} = B$。

样例

输入 1

7 4
1 2 4 6

输出 1

8
1 5 7
2 2 3
3 8
2 10 8
3 3
1 12 12
2 10 13
1 9 14

输入 2

3 1
3

输出 2

0

说明

第一个样例测试对应于题目描述中给出的示例操作。在第二个样例中,不需要进行任何操作,因为 $A_n = B$。

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.