#P11111. [PA 2025]Zbiory 2

[PA 2025]Zbiory 2

题目描述

题目译自 PA 2025 Runda próbna Zbiory 2

在这道题中,我们考虑一个包含 n+mn+m 个集合的序列,这些集合都是 {1,,n}\{1, \ldots, n\} 的子集。前 nn 个集合 A1,,AnA_{1}, \ldots, A_{n} 的定义如下:对于 1in1 \leq i \leq n,数字 ii 属于集合 AjA_{j} 当且仅当 ii 能被 jj 整除。

例如,当 n=7n=7 时,集合依次为:

  • A1={1,2,3,4,5,6,7}A_{1}=\{1,2,3,4,5,6,7\}
  • A2={2,4,6}A_{2}=\{2,4,6\}
  • A3={3,6}A_{3}=\{3,6\}
  • A4={4}A_{4}=\{4\}
  • A5={5}A_{5}=\{5\}
  • A6={6}A_{6}=\{6\}
  • A7={7}A_{7}=\{7\}

接下来的 mm 个集合 An+1,An+2,,An+mA_{n+1}, A_{n+2}, \ldots, A_{n+m} 通过对已有集合进行并集、交集或补集运算生成:

  • 并集 AiAjA_{i} \cup A_{j}:包含所有属于 AiA_{i}AjA_{j} 的数字;
  • 交集 AiAjA_{i} \cap A_{j}:包含所有同时属于 AiA_{i}AjA_{j} 的数字;
  • 补集 AiA_{i}^{\prime}:包含 {1,,n}\{1, \ldots, n\} 中不属于 AiA_{i} 的所有数字。

例如,一组可能的运算序列可能是:

  • A8=A5A7={5,7}A_{8}=A_{5} \cup A_{7}=\{5,7\}
  • A9=A2A3={6}A_{9}=A_{2} \cap A_{3}=\{6\}
  • A10=A8={1,2,3,4,6}A_{10}=A_{8}^{\prime}=\{1,2,3,4,6\}
  • A11=A10A8={}A_{11}=A_{10} \cap A_{8}=\{\}
  • A12=A3={1,2,4,5,7}A_{12}=A_{3}^{\prime}=\{1,2,4,5,7\}
  • A13=A12A12={1,2,4,5,7}A_{13}=A_{12} \cup A_{12}=\{1,2,4,5,7\}
  • A14=A10A13={1,2,4}A_{14}=A_{10} \cap A_{13}=\{1,2,4\}
  • A15=A9A14={1,2,4,6}A_{15}=A_{9} \cup A_{14}=\{1,2,4,6\}

给定 nn 和目标集合 BB,你的任务是确定一个操作次数 mm (0m100000)(0 \leq m \leq 100000) 以及 mm 个运算步骤,使得最终得到的集合 An+mA_{n+m} 等于 BB。可以证明,在任务限制下,任意 {1,,n}\{1, \ldots, n\} 的子集都可通过不超过 mm 的操作构造出来。

输入格式

输入的第一行包含两个整数 n,sn, s (1n50000,1sn)(1 \leq n \leq 50000, 1 \leq s \leq n),分别表示初始集合数量和目标集合 BB 的大小。第二行包含 ss 个递增的整数 b1,b2,,bsb_{1}, b_{2}, \ldots, b_{s} (1b1<b2<<bsn)(1 \leq b_{1} < b_{2} < \ldots < b_{s} \leq n),表示集合 BB 的元素。

输出格式

输出的第一行包含一个整数 mm (0m100000)(0 \leq m \leq 100000),表示操作次数。接下来的 mm 行描述每次操作,每行对应生成集合 An+iA_{n+i} 的方式,格式为以下三种之一:

  • 1 x y:表示并集 An+i=AxAyA_{n+i}=A_{x} \cup A_{y}
  • 2 x y:表示交集 An+i=AxAyA_{n+i}=A_{x} \cap A_{y}
  • 3 x:表示补集 An+i=AxA_{n+i}=A_{x}^{\prime}

要求 An+m=BA_{n+m}=B,且每次操作的 x,yx, y 必须满足 1x,y<n+i1 \leq x, y < n+i(仅引用之前的集合)。

7 4
1 2 4 6

3 1
3

第一个样例对应题目描述中的运算序列。

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

0

第二个样例不需要执行任何操作,因为 An=BA_n = B