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 翻译