CF279D The Minimum Number of Variables
题目描述
你有一个正整数序列 $a_{1},a_{2},...,a_{n}$,序列中的所有数字各不相同。我们固定 $b_{1},b_{2},...,b_{m}$ 这 $m$ 个变量。最开始时,每个变量 $b_{i}$($1 \leq i \leq m$)的初始值都为 0。现在进行连续的 $n$ 次操作,具体如下:
第一次操作,将 $a_{1}$ 的值赋给某个变量 $b_{x}$($1 \leq x \leq m$)。之后的每一次(共 $n-1$ 次)第 $t$ 次操作,将某个变量 $b_{y}$ 赋值为 $b_{i}$ 和 $b_{j}$($1 \leq i,j,y \leq m$)中的值的和,并且本次操作赋的值必须等于 $a_{t}$。每次操作时,$y,i,j$ 都可以重新选择。
你的任务是,找到能够完成上述一系列操作所需的最小变量数 $m$。
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 23$)。
第二行包含 $n$ 个以空格分隔的整数 $a_{1},a_{2},...,a_{n}$($1 \leq a_{k} \leq 10^{9}$)。
保证序列中的所有数字各不相同。
输出格式
输出一个整数,即完成操作所需要的最小变量数 $m$。
如果对于任意 $m$ 都无法完成操作,输出 -1。
说明/提示
在第一个样例中,你可以使用两个变量 $b_{1},b_{2}$ 来完成以下操作:
1. $b_{1} := 1$;
2. $b_{2} := b_{1} + b_{1}$;
3. $b_{1} := b_{1} + b_{2}$;
4. $b_{1} := b_{1} + b_{1}$;
5. $b_{1} := b_{1} + b_{2}$。
由 ChatGPT 5 翻译